Firefox pdf 表单在复选框中显示“4”(而不是复选标记);在 IE 中运行良好 & Chrome

Firefox pdf form displays a "4" in checkbox (instead of a checkmark); Works fine in IE & Chrome

我正在创建一个 pdf 文档(通过 ColdFusion),但是当我在 Firefox 中预览呈现的 pdf 时,我在我的复选标记应该出现的地方得到了数字“4”(见下图)。 当我在 Chrome 或 IE 中预览完全相同的 pdf 时,我看到了复选标记,并且一切正常!

我是 pre-populating pdf 表单字段(通过 ColdFusion 会话变量),然后使用以下标记呈现 pdf:

<cfpdfform source="82040.pdf" action="populate">
   <cfpdfformparam name="org" value="">
</cfpdfform>

这是在 Internet Explorer 中生成的 pdf 表单:

请注意复选标记是如何正确呈现的:

这是在 FireFox 中预览的相同表单:

请注意复选框是如何用“4”代替复选标记的:

如有任何帮助,我们将不胜感激!

a bug with Firefox's PDF Viewer. Currently, there is no fix. As 指出,底层库 (pdf.js) 中的错误应该已修复。但是,仍然存在 Mozilla 更新 Firefox 中内置的旧版本(这是大多数人使用的版本)的问题。目前,该错误仍然存​​在。

可能您能做的最好的事情是 return pdf 作为 "attachment",而不是 "inline",因此浏览器会提示他们 "open/save" 文件。如果用户选择 "open" pdf,则应该使用他们的默认程序打开。 (Adobe Reader 是大多数用户的默认设置)。

<cfheader name="Content-Disposition" value="attachment; filename=fileName.pdf">
<cfcontent type="application/pdf" .../>

更新:

这个错误显然是 addressed already, as pointed out via the project's github repo: the bug was supposedly fixed during this commit。因此,如果您仍然遇到问题,则意味着:

  • 您使用的是 pdf.js 库的过时版本,
  • 或者,问题已经重新入库了

因此,首先,您需要确保您使用的是 pdf.js 库 的最新版本。如果您仍然遇到问题,即使使用最新版本,那么问题仍然存在于嵌入式 pdf 文档查看器中,并且在项目维护者最终修复之前您无法解决这个问题问题。

您遇到的问题(您在应该有复选标记的地方看到“4”的原因是因为 pdf.js 库使用特殊符号字体呈现复选标记,但在firefox 的嵌入式 pdf 查看器有问题的版本符号字体没有正确呈现复选标记,因此它显示“4”而不是复选标记——因为它们在自定义字体中使用的复选标记符号恰好被映射到数字“4”。

类似地,出于上述相同的原因,如果您将复选框分配给呈现正方形(而不是检查),字母 "N" 将出现在复选框而不是正方形中,因为方形符号映射到字母 "N"。

此问题仅存在于 Firefox 的嵌入式 pdf 文档查看器中,但在 Adob​​e Acrobat Reader 或其他离线 pdf 阅读器(和其他浏览器 pdf 阅读器,这就是它在 Chrome 和 IE 中看起来不错的原因),因此当用户下载表单时,它会像您期望的那样出现。

您可以尝试的一些解决方法/优化:

尝试其中一种或全部,它们没有特定的顺序(或保证有效)

  • 不要依赖 firefox 中的内置 pdf.js 浏览器扩展,而是 make your own updated version based on the latest pdf.js source or target another pdf library 并使用它与浏览器无关的 API 来呈现和显示您的 pdf。

  • 创建一个HTML表单供用户填写并验证所有信息,然后根据HTML表单提供的数据渲染pdf,仅供下载(无法在浏览器中预览)。这将迫使他们在不存在问题的默认 pdf 查看器中打开 pdf,因为同样,您描述的问题只发生在 Firefox 的嵌入式 pdf 查看器中,而不发生在其他 pdf 查看器(如 Adob​​e Acrobat)中。

  • 确保您的服务器上安装了 ZapfDingBats Font。我还没有证实这一点,但是应该解决这个问题的那个提交似乎已经增加了对这种字体的支持,所以值得尝试确保你的 ColdFusion 服务器上可以访问这种字体,然后尝试预览渲染火狐中的pdf。

  • 检测到用户正在通过 Firefox 访问您的表单,如果是,警告用户该问题,但向他们保证下载表单并在他们的默认 pdf 查看器中查看将按预期工作.

  • 将页面转换为 HTML5(如果您还没有),然后添加 HTML5 shiv (so HTML5 features can be used on older browsers), and a CSS normalizer,并使用这些最佳设置测试问题是否仍然存在。确保在 HTML5 标准下以某种方式区别对待问题是值得一试的,因为不是每个人都遇到与您相同的问题。

  • 最后,使用 HTML validator.

  • 确保通过 ColdFusion 输出将您的 HTML 呈现为有效标记

除此之外,在 mozilla 团队更新其嵌入式 pdf 查看器之前,您无能为力。但由于问题仅出在 firefox 查看器中,而不出在 pdf 本身,因此由您决定这是否会破坏交易,并寻找替代方案。

注意: PDF.js 内置于 Firefox 19+ 版本中。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~

更新:可以使用this pdf(表示ZapDingbats符号字体的字符映射)作为一种方式测试浏览器对通过 pdf.js 呈现的 pdf 中嵌入字体的解释。请注意,在撰写本文时,上述 pdf 无法在 Firefox(通过 pdf.js)中正确显示 Zapf Dingbats,但其他浏览器可以正常显示它们(注意在 firefox 中 a20[x2714] 旁边的“4”,以及在 Chrome.

中相同条目 (a20[x2714]) 旁边的复选标记