我刚刚将我的ASP.NET MVC项目从Spire.PDF转换为iTextSharp(由于Spire.PDF免费版本的限制)。但是,由于某些原因,我甚至无法得到最简单的例子。
浏览器(本例中为IE 11 x64)只会显示一个空的灰色页面。如果我将此页面保持打开一段时间,则Adobe Acrobat会显示错误消息(103:103)。
有趣的是,当我保存文件时(通过添加Content-Disposition标头或使用Fiddler),PDF打开时没有问题。我还发现Edge和32位版本的IE会正常显示PDF文件。
以下是我的示例Action方法:
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 :我想回复一些评论
@ChrisHaas即使在更改内容类型后,IE仍会显示灰色页面。但是,我使用Fiddler在OneDrive链接中保存响应(一次使用标题,一次没有),您可以在上面的问题中找到它。
@Matt你的意思是F12开发工具?它不会在灰色页面上正确加载,它只是一个空白区域。所以我无法检查任何事情。
@Paulo之前我尝试过这个并没有任何效果。然而,根据Fiddler的说法,Content-Length似乎也是正确的。
答案 0 :(得分:0)
我仍然不明白究竟是什么问题,但我决定在另一台PC上测试它,并确定它是服务器端还是客户端问题。
我重新配置了IIS Express以允许远程连接并从另一个系统(也是带有IE 11的Win 10 Pro x64)访问PDF文件,并且它运行良好。它的行为也取决于内容类型(即八位字节流的下载对话框和application / pdf的内联PDF查看器)。
接下来我做的是在我的开发机器上重新安装Adobe Acrobat Reader DC,但问题仍然存在,即使重新启动并清除IE缓存后也是如此。所以我尝试的最后一件事是从版本DC降级到X - 这实际上有效,现在将在浏览器中正常显示PDF。
就像我说的那样,我不明白究竟是什么问题,但至少我现在可以继续处理我的项目了。
感谢大家的建议!