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;
}
}
ストリームとしてダウンロードすることは、ローカルでダウンロードすることと同じです。あなたが何をしているかを見ることができるように、コードを表示してください。 – DavidG
@DavidG、あなたは正しいかもしれませんが、ブラウザ内のレンダリングエンジンは、ダウンロード後にPDFを開くためにOPが使用するプログラムのレンダリングエンジンとは異なる結果を生成する可能性があります。 –
コード例を追加しました。 – PeteFox