【问题标题】:pdf error: "expected a dict object" on IE9 and IE10pdf 错误:IE9 和 IE10 上的“预期为 dict 对象”
【发布时间】:2014-09-12 23:39:23
【问题描述】:

我不确定这是 Adob​​e Acrobat/Reader 还是 IE 问题,但我似乎无法从 Adob​​e 支持或其用户到用户论坛获得任何信息,所以我想我会看看是否有任何 IE 用户可以帮忙。
正在发生的事情是一些用户试图通过 Internet Explorer 9 和 Internet Explorer 10 打开位于网站(内联网)上的 PDF 文件。当用户单击列出的 PDF 文件时,Acrobat(或 Reader)错误“预期为 dict对象”出现并且 IE 屏幕保持空白。我只能在 IE9 和 IE10 上在我的 PC 上重新创建此错误,但它适用于 IE8 和 IE11 以及其他浏览器。所以我想知道它是否与IE有关。如果用户在 Acrobat 或 Reader 应用程序中打开 pdf,它将成功打开。 我们有一个客户喜欢用这种方式打开他的 PDF 文件,所以我想解决这个问题(而不是告诉他在 Acrobat 或 Reader 中打开 pdf)。 谢谢你的回答。

【问题讨论】:

  • 第一步是查明文档是否实际损坏。为此,您/您的用户会主动下载它,然后在 Adob​​e Reader 或 Acrobat 中打开它。如果发生错误,但仅发生在该特定机器上,则向该用户的传输似乎有问题。交叉检查也将是从其他地方下载文档并执行相同操作。但是,如果它在某些 IE 下工作,但在其他 IE 下不工作,则问题可能出在 IE(或其与 Acrobat 查看器插件的集成)上。
  • 它确实可以使用 pdf 查看器正确打开。这件事在几个 IE 版本中随机发生。

标签: internet-explorer pdf adobe acrobat


【解决方案1】:

如果您对保存 PDF 有任何控制权,请在“优化快速 Web 视图”选项或关闭其等效选项的情况下保存或导出 PDF 本身。

对于我的特殊情况,我从 InDesign(CS 1 或 6)导出 PDF,然后在 Internet Explorer(当前为 11,但以前使用旧版本)和 Acrobat Reader XI(当前为 11.0.10)中打开时发现此问题)。

我可以通过让用户清除 IE 的缓存,然后再次下载 PDF,或者更改 PDF 的文件名并让他们下载新重命名的版本(这经常工作,奇怪的是)来解决问题。但是,我不想让最终用户做这样的事情。

我发现的所有其他解决方案都是关于在 Reader 的首选项中关闭“允许快速 Web 视图”和/或禁用 Internet Explorer 中的插件 - 以强制浏览器直接在 Reader 中打开文件。但是,再一次,我不想让最终用户对这样的设置感到困惑。

参考后一种面向最终用户的解决方案: http://www.techyv.com/questions/adobe-reader-expected-dict-object

【讨论】:

    【解决方案2】:

    如果在您的测试中,文档在 IE8 或 IE9 下始终失败,但在 IE8 或 IE11 下始终成功,则它没有随机性,但在帮助应用程序(或相同版本)上可能存在关键差异每个浏览器都在使用。

    即使正如您的措辞所暗示的那样,您始终在同一台机器上运行 IE8 到 IE11 测试,我建议您仔细检查每个浏览器是否调用了相同的 PDF 实用程序。

    例如,如果您在同一台机器上拥有最新版本的 Reader 和 Acrobat 的旧副本共享空间,则 IE8 和 IE11 可能会在 IE9 和 IE10 中找到 Reader(它可以很好地处理文档的内部结构)可能与一个年长的 Acrobat 相关联,该 Acrobat 在消化一段较新的 PDF 编码时遇到了一些问题。

    相反,另一种可能性是较旧的 Acro/Reader 忽略了一个问题,后来的版本将其标记为要抱怨的错误。正如 Max Wyss 建议的那样,您应该下载问题文档以查看它是否已损坏。通过 Adob​​e Acrobat 的 Pre-flight PDF 语法分析器运行它,看看它是否会标记文档中的任何问题。如果是这样,您可能会看到不同实用程序对源文档中问题的反应。

    【讨论】:

      【解决方案3】:

      我知道这是一篇旧帖子,但我无法修改 Adob​​e 帖子以纠正任何人,所以这是我的最佳选择。

      答案是对的,但也是错的。它与损坏的格式有关,而不是损坏的文件或最有可能与版本差异有关。

      作为开发人员,要让 PDF(和 FDF)正常工作,最困难的部分是字段验证。如果您曾经查看过填写 PDF 表单的文件,它们非常简单。字段名称、值。

      另一件很简单的事情是你可以很容易地打破它们。输出格式为<</T(txtFieldName)/V(Value)>>

      但是,类似于 SQL 注入,如果最终用户将某些内容混淆,那么它会中断并导致 DICT 错误。假设字段信息是:

      <</T(txtFieldName)/V(I work for the Central Intelligence Agency (CIA))>>
      

      但是你这些愚蠢的 CIA 人忘记打开或关闭 CIA 括号...

      <</T(txtFieldName)/V(I work for the Central Intelligence Agency --> CIA))>>
      

      这会导致文件损坏,从而导致 DICT 错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多