我使用 iTextSharp 生成 PDF 文档已有一年多了。不幸的是,随着 Adobe Reader X 的发布,我的 PDF 现在会出现“您要保存吗?”关闭 PDF 文档时出现的对话框。对于不是使用 iTextSharp 生成的 PDF,不会发生这种情况。对于整天打开和关闭 PDF 文档的用户来说,这真的很烦人。我可以设置 iTextSharp 中的任何属性来防止这种情况发生吗?
如果有帮助,我正在使用 PdfReader 从现有 PDF 文档中读取数据(此原始文档不会导致出现“保存”对话框)。然后,我使用 PdfWriter 创建一个新文档,并使用 AddTemplate 将原始文档的一部分复制到新文档。
问题是这一行:
Response.OutputStream.Write(MS.GetBuffer(), 0, MS.GetBuffer().Length)
GetBuffer 方法返回整个内部缓冲区,该缓冲区大于实际内容。坏的 PDF 在末尾有大约 10kb 的垃圾内容(零字节),好的 PDF 只有几个垃圾字节。使用内存流的ToArray()方法获取PDF文件即可解决问题。您还将获得较小的文件。
byte[] pdf = MS.ToArray();
Response.OutputStream.Write(pdf, 0, pdf.Length);
还要将“Content-Length”设置为 pdf 数组的长度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)