【发布时间】:2015-05-08 19:31:27
【问题描述】:
我目前正在使用 ITextSharp 使用 .Net 3.5 ASPX 页面创建 PDF。一切正常.. 唯一的问题是在 chrome(版本 42.0.2311.135)中,当我单击保存按钮或右键单击并说保存时,它会尝试保存为 .aspx 页面。我在使用 Firefox 或 Internet Explorer 时没有遇到这些问题。我尝试禁用 chrome PDF 查看器,它只是自动将文件保存为 aspx 文件。我在下面包含了我的代码,该代码是通过单击按钮触发的。我假设这是我处理响应的方式?有任何想法吗?
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,现在一切都按预期工作。
【问题讨论】:
标签: c# asp.net google-chrome .net-3.5 itextsharp