ITextSharp - Google Chrome Save Button Saves PDF as .ASPX page
我目前正在使用 ITextSharp 使用 .Net 3.5 ASPX 页面创建 PDF。一切正常.. 唯一的问题是在 chrome(版本 42.0.2311.135)中,当我单击保存按钮或右键单击并说保存时,它会尝试保存为 .aspx 页面。我在使用 Firefox 或 Internet Explorer 时没有遇到这些问题。我尝试禁用 chrome PDF 查看器,它只是自动将文件保存为 aspx 文件。我在下面包含了我的代码,该代码是通过单击按钮触发的。我假设这是我处理响应的方式?有任何想法吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | iTextSharp.text.Document d = new iTextSharp.text.Document(PageSize.A4, 20, 20, 20, 20); using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { w = PdfWriter.GetInstance(d, stream); //add stuff to itext document d.Close(); byte[] b = stream.ToArray(); stream.Close(); Response.Clear(); Response.ContentType ="application/pdf"; Response.BinaryWrite(b); HttpContext.Current.ApplicationInstance.CompleteRequest(); } |
更新:
想分享我的发现,以防它让人头疼。添加 Response.AddHeader("Content-Disposition","inline;filename=myfilename.pdf");修复了大部分问题,但我仍然遇到 Google chrome 查看器中的保存按钮的问题(打印工作正常,但保存提示用户保存页面而不是 pdf)。通过单击按钮在 .aspx 页面上生成 PDF。生成后,我清除响应并将 PDF 转储到页面。页面上的表单元素没有设置方法,因此它作为帖子发送(通过提琴手发现)。此页面正在通过 iframe 共享。我在页面上将方法更改为 GET,现在一切都按预期工作。
尝试:
1 | Response.AddHeader("Content-Disposition","attachment;filename=myfilename.pdf"); |