iTextSharp生成的PDF现在导致Adobe Reader X中的“保存”对话框

时间:2011-02-24 19:20:49

标签: pdf itextsharp adobe-reader

我一直使用iTextSharp生成PDF文档超过一年。不幸的是,随着Adobe Reader X的发布,我的PDF现在会导致“你想保存吗?”关闭PDF文档时出现的对话框。对于未使用iTextSharp生成的PDF,不会发生这种情况。对于那些整天打开和关闭PDF文档的用户来说,这真的很烦人。我可以设置iTextSharp中的任何属性来防止这种情况发生吗?

如果有帮助,我使用PdfReader从现有PDF文档中读取数据(此原始文档不会导致出现“保存”对话框)。然后我使用PdfWriter创建一个新文档,并使用AddTemplate将原始文档的一部分复制到新文档。

2 个答案:

答案 0 :(得分:28)

问题在于这一行:

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);

还使用pdf数组的长度设置“Content-Length”。

答案 1 :(得分:1)

同时添加

  

HttpContext.Current.Response.End();

完成PDF文件后。