关于 c#:ITextSharp – Google Chrome 保存按钮将 PDF 保存为 .ASPX 页面

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 文件。我在下面包含了我的代码,该代码是通过单击按钮触发的。我假设这是我处理响应的方式?有任何想法吗?

enter

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");