所有,我正在开发一个ASP.NET 4.6.1 Web表单应用程序,它在浏览器上本地呈现pdf文档。当呈现某些pdf文档时,我只在 IE 11 上收到错误消息如屏幕截图所示" 该文件已损坏且无法修复。本地\ EWH-6624-0 "。同一文档在Chrome和FireFox.Has上呈现正常有谁遇到过同样的问题?我在Chrome中下载了相同的pdf文件并试图在 Adobe Reader 11.0.22版中打开它,它给了我"打开此文档时出错。" 文件已损坏且无法打开"。请参阅下面的屏幕截图
asp.net应用程序从服务获取数据并在UI上呈现它。这是执行此操作的C#代码
var data = getdataAndOtherThingsFromService();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", data.DocumentStream.Length.ToString());
Response.BinaryWrite(data.DocumentStream);
答案 0 :(得分:1)
IE不呈现PDF。正如对话框清楚地指出的那样,Adobe Reader插件正在尝试呈现PDF但却无法呈现。这就是您在下载文件并打开文件时获得相同对话框的原因。
Chrome,Firefox和Edge,甚至是Dropbox上托管的PDF文件都内置了自己的PDF渲染引擎,显然,它们比Adobe Reader更加宽容格式错误的PDF。
不幸的是,如果您依赖浏览器或浏览器插件来呈现PDF文件,您将永远无法创建一致的体验。相反,你需要实现像PDF.js这样的东西,虽然不是一个完美的PDF渲染工具,但至少可以跨浏览器和操作系统表现出来。
答案 1 :(得分:0)
添加修复我的问题的以下代码。这可能会对将来的某人有所帮助
var data = getdataAndOtherThingsFromService();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", data.DocumentStream.Length.ToString());
Response.BinaryWrite(data.DocumentStream);
Response.End();