【问题标题】:PDF rendering issues on IE 11IE 11 上的 PDF 渲染问题
【发布时间】:2018-04-20 10:35:09
【问题描述】:

所有,我正在开发一个 ASP.NET 4.6.1 Web 表单应用程序,该应用程序在浏览器上原生呈现 pdf 文档。当呈现一些 pdf 文档时,我仅在 IE 11 上收到错误消息如屏幕截图所示“文件已损坏,无法修复。Local\EWH-6624-0”。相同的文档在 Chrome 和 FireFox 上渲染良好。有人遇到过同样的问题吗?我在 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);

【问题讨论】:

    标签: asp.net internet-explorer pdf adobe


    【解决方案1】:

    在下面添加解决我的问题的代码。这可能对将来的某人有所帮助

    var data = getdataAndOtherThingsFromService();
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-length", data.DocumentStream.Length.ToString());
    Response.BinaryWrite(data.DocumentStream);
    Response.End();
    

    【讨论】:

      【解决方案2】:

      IE 不呈现 PDF。正如对话框清楚地表明的那样,Adobe Reader 插件正在尝试呈现 PDF 但无法呈现。这就是为什么您在下载文件并打开它时会看到相同的对话框。

      Chrome、Firefox 和 Edge,甚至托管在 Dropbox 上的 PDF 文件都内置了自己的 PDF 渲染引擎,而且显然比 Adob​​e Reader 更能容忍格式错误的 PDF。

      不幸的是,如果您依赖浏览器或浏览器插件来呈现您的 PDF 文件,您将永远无法创建一致的体验。相反,您需要实现类似 PDF.js 之类的东西,虽然它不是一个完美的 PDF 渲染工具,但至少可以在浏览器和操作系统之间进行预测。

      【讨论】:

      • 根据您的目标,您还可以研究转换为可以在网页上内联显示的格式,例如 SVG。跨浏览器的可预测性可能不如 PDF.js,但在用户体验方面更好(跨浏览器缩放等)
      • 当使用更高级的功能时,SVG 并不是在所有浏览器中可预测呈现的格式之一,而且 PDF 包含一些奇怪的结构,包括使用不规则字母间隔显示的字形/字符。
      • joelgeraci,感谢您的意见。我不了解 PDF.js,这对我来说是新闻。我将更改代码以包含 PDF.js
      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      相关资源
      最近更新 更多