首页 文章

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

提问于
浏览
22

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

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

2 回答

  • 1

    问题是这一行:

    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” .

  • 28

    还添加

    HttpContext.Current.Response.End();

    完成PDF文件后 .

相关问题