繁体   English   中英

iTextSharp生成的PDF在浏览器中有效,但下载后不起作用

[英]iTextSharp generated PDF works in browser but not after download

我有一个PDF,它是由iTextSharp在C#中生成的-它是一个模板PDF,它使用压模添加了一些附加的文本行,然后推送到S3,最后作为文件流(使用mvc.net)返回到浏览器。

在浏览器(Chrome)中查看PDF时,新添加的行工作正常,但是当我下载PDF并在本地打开它(在Mac上使用Preview或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;
    }
}

这是一个时髦的!

在同一解决方案中,我还有另一种方法可以正常工作。 事实证明,我加载并写入内容的模板PDF就是问题所在。

我使用的模板是在Adobe Illustrator中生成的。 我还有另一个是在Adobe Indesign中生成的-可以正常工作。

当我将此模板pdf放入Indesign,然后再次将其从Indesign中导出时,它突然起作用了。

我不确定是什么导致了此问题,但是它一定是某种编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM