【发布时间】:2015-11-30 11:41:26
【问题描述】:
我刚刚将我的 ASP.NET MVC 项目从 Spire.PDF 转换为 iTextSharp(由于 Spire.PDF 免费版本的限制)。但是由于某种原因,我什至无法让最简单的示例正常工作。
浏览器(在这种情况下为 IE 11 x64)只会显示一个空白的灰色页面。如果我保持此页面打开一段时间,Adobe Acrobat 会显示错误消息 (103:103)。
有趣的是,当我保存文件时(通过添加 Content-Disposition 标头或使用 Fiddler),PDF 将毫无问题地打开。我还发现 Edge 和 32 位版本的 IE 可以很好地显示 PDF 文件。
这是我的示例操作方法:
public ActionResult DownloadPdf() {
var document = new Document(PageSize.A4, 50, 50, 25, 25);
var output = new MemoryStream();
var write = PdfWriter.GetInstance(document, output);
var titleFont = FontFactory.GetFont("Arial", 18, Font.BOLD);
document.Open();
document.Add(new Paragraph("Test Receipt", titleFont));
document.Close();
Response.ContentType = "application/pdf";
Response.BinaryWrite(output.ToArray());
return new EmptyResult();
}
除了设置 Content-Length 或 Response.Buffer 之外还有什么想法吗? (我已经试过了)
更新1:我想回复一些cmets
@ChrisHaas 即使更改了内容类型,IE 仍然会显示灰色页面。但是,我使用 Fiddler 将响应(一次带有标题,一次不带有)保存在 OneDrive 链接中,您可以在上面的问题中找到该链接。
@Matt 你是说 F12 开发工具吗?它不会在灰色页面上正确加载,它只是一个空白区域。所以我真的不能检查任何东西。
@Paulo 我之前试过这个,但没有任何效果。然而,根据 Fiddler 的说法,Content-Length 似乎是正确的。
【问题讨论】:
-
当它在浏览器中打开时,尝试查看 Inspect Element。可能有一些事情可以告诉我们出了什么问题。
-
添加内容长度,如果不存在 IE 会出现问题。
-
您能否将内容类型更改为
application/octet-stream,这会强制浏览器提示“另存为”,将该文件保存在某处,然后将该文件发布到网上以便我们进行检查? -
我想下一步是找出正在尝试查看 PDF 的程序。据我所知,IE 没有原生 PDF 渲染器,而是卸载它。 Windows 8 有一个本机 PDF 渲染器,它可能会将自身内联到 IE 中,但我不确定。如果您安装了 Acrobat 或 Reader,Adobe 也会安装渲染器。您能说出正在尝试呈现 PDF 的程序是什么吗?您可能需要look through your registry 或附加进程监视器。
标签: asp.net internet-explorer pdf itextsharp