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

Jas*_*son 22 pdf itextsharp adobe-reader

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

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

iPD*_*dev 28

问题是这一行:

Response.OutputStream.Write(MS.GetBuffer(), 0, MS.GetBuffer().Length)
Run Code Online (Sandbox Code Playgroud)

GetBuffer方法返回整个内部缓冲区,该缓冲区大于实际内容.坏PDF在末尾有大约10kb的垃圾内容(字节为零),好的PDF只有几个垃圾字节.使用内存流的ToArray()方法获取PDF文件,问题将得到解决.您还将获得较小的文件.

byte[] pdf = MS.ToArray();
Response.OutputStream.Write(pdf, 0, pdf.Length);
Run Code Online (Sandbox Code Playgroud)

同时使用pdf数组的长度设置"Content-Length".