2017-02-28 16 views
0

C#でiTextSharpで生成されたPDFを持っています - スタンパを使用してテキストを追加した後、S3にプッシュし、ブラウザをファイルストリームとして使用する(mvc.netを使用)。iTextSharpで生成されたPDFはブラウザでは動作しますが、ダウンロード後には動作しません

PDFをブラウザ(Chrome)で表示したときに新しく追加された行は正常に動作しますが、PDFをダウンロードしてローカル(プレビューまたはMacのAdobe Acrobat)で開くと、テンプレートのみが表示され、新しく追加された行はなくなっています。

この原因は何ですか?ここで

は、コードの例です:(凝縮)

using(var receiptTemplateStream = GetType().Assembly.GetManifestResourceStream("XXXXX.DepositReceipts.Receipt.pdf" )) 
{ 
    var reader = new PdfReader(receiptTemplateStream); 

    var outputPdfStream = new MemoryStream(); 
    var stamper = new PdfStamper(reader, outputPdfStream) { FormFlattening = true, FreeTextFlattening = true }; 
    var _pbover = stamper.GetOverContent(1); 



    using (var latoLightStream = GetType().Assembly.GetManifestResourceStream("XXXXX.DepositReceipts.Fonts.Lato-Light.ttf")) 
    using (var latoLightMS = new MemoryStream()) 
    { 

     _pbover.SetFontAndSize(latoLight, 11.0f); 
     var verticalPosition = 650; 

     _pbover.ShowTextAligned(0, account.company_name, 45, verticalPosition, 0); 
     verticalPosition = verticalPosition - 15; 


     var filename = "Receipt 0001.pdf"; 

     stamper.SetFullCompression(); 
     stamper.Close(); 

     var file = outputPdfStream.ToArray(); 
     using (var output = new MemoryStream()) 
     { 
      output.Write(file, 0, file.Length); 
      output.Position = 0; 

      var response = await _s3Client.PutObjectAsync(new PutObjectRequest() 
      { 
       InputStream = output, 
       BucketName = "XXXX", 
       CannedACL = S3CannedACL.Private, 
       Key = filename 
      }); 
     } 

     return filename; 
    } 
} 
+0

ストリームとしてダウンロードすることは、ローカルでダウンロードすることと同じです。あなたが何をしているかを見ることができるように、コードを表示してください。 – DavidG

+0

@DavidG、あなたは正しいかもしれませんが、ブラウザ内のレンダリングエンジンは、ダウンロード後にPDFを開くためにOPが使用するプログラムのレンダリングエンジンとは異なる結果を生成する可能性があります。 –

+0

コード例を追加しました。 – PeteFox

答えて

0

これはファンキーなものでした!

私は同じ解決策で問題なく動作する別の方法を持っていました。私が読み書きしたテンプレートPDFが問題であることが判明しました。

私が使用したテンプレートは、Adobe Illustratorで生成されました。私はAdobe Indesignで生成された別のものを持っていました。

このテンプレートpdfをIndesignにプルしてから、Indesignから再度エクスポートしたところ、突然動作しました。

この問題の原因は正確にはわかりませんが、何らかの種類のエンコードである必要があります。

関連する問題