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

我一直使用iTextSharp生成PDF文档一年多。 不幸的是,随着Adobe Reader X的发布,我的PDF现在引起了一个“你想保存吗? 对话框在closuresPDF文档时出现。 对于不是用iTextSharp生成的PDF不会发生这种情况。 我的用户整天都在打开和closuresPDF文档,真的很烦人。 iTextSharp中是否有可以设置的属性来防止这种情况的发生?

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

问题是这一行:

Response.OutputStream.Write(MS.GetBuffer(), 0, MS.GetBuffer().Length) 

GetBuffer方法返回实际内容较大的整个内部缓冲区。 坏的PDF在最后有大约10kb的垃圾内容(零字节),好的PDF只有几个垃圾字节。 使用内存stream的ToArray()方法来获取PDF文件,问题将得到解决。 你也会得到更小的文件。

 byte[] pdf = MS.ToArray(); Response.OutputStream.Write(pdf, 0, pdf.Length); 

还要设置“Content-Length”与pdf数组的长度。

另外添加

HttpContext.Current.Response.End();

完成PDF文件后。

    Interesting Posts