Firefox pdf表单在复选框中显示“4”(而不是复选标记);在IE和IE中工作正常铬

时间:2015-01-10 23:23:51

标签: firefox browser coldfusion pdf.js

我正在创建一个pdf文档(通过ColdFusion),但是当我在Firefox中预览渲染的pdf时,我得到了数字“4”,我的复选标记应该是(见下图)。 当我在Chrome或IE中预览完全相同的pdf时,我看到了复选标记,这一切都完美无缺!

我预填充pdf表单字段(通过ColdFusion会话变量),然后使用以下标记呈现pdf:

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

以下是Internet Explorer中生成的pdf表单:

请注意如何正确呈现复选标记: the checkmark renders normally in IE

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

请注意该复选框的“4”而不是复选标记: In firefox I get a "4" instead of a checkmark

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:8)

a bug with Firefox's PDF Viewer。目前,没有修复。正如radiovisual's post指出的那样,底层库(pdf.js)中的错误被认为是固定的。但是,仍然存在Mozilla更新旧版本的问题(这是大多数人正在使用的)。目前,该错误仍然很突出。

您可以做的最好的事情是将pdf作为&#34;附件&#34;而不是&#34;内联&#34;,以便浏览器提示他们&#34;打开/保存&# 34;文件。如果用户选择&#34;打开&#34; pdf,它应该用他们的默认程序打开。 (Adobe Reader是大多数用户的默认设置)。

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

更新

答案 1 :(得分:6)

这个bug显然是addressed already,正如项目的github repo所指出的那样:这个bug应该在this commit期间得到修复。因此,如果您仍然遇到问题,则意味着:

  • 您使用的是pdf.js库的过时版本
  • 或者,问题已重新引入图书馆。

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

您遇到的问题(您之所以看到&#34; 4&#34;应该有复选标记的原因,是因为pdf.js库使用特殊符号字体来呈现复选标记,但是在有问题的firefox嵌入式pdf-viewer版本中,符号字体不能正确呈现复选标记,因此它显示的是&#34; 4&#34;而不是复选标记 - 因为它们是复选标记符号在自定义字体中使用恰好被映射到数字&#34; 4&#34;。

同样,出于与上述相同的原因,如果您将复选框分配给渲染方块(而不是检查),则字母为&#34; N&#34;将出现在复选框而不是方形,因为方形符号被映射到字母&#34; N&#34;。

此问题仅存在于Firefox 的嵌入式pdf文档查看器中,但在Adobe Acrobat Reader或其他离线pdf阅读器(以及其他浏览器pdf阅读器)中查看时看起来完全正常,这就是为什么它在Chrome和IE浏览器中看起来很好,所以当用户下载表单时,它会显示为您所期望的。

您可以尝试一些变通方法/优化:

尝试其中一个或所有这些,它们没有特定的顺序(或保证可以工作)

  • 不要依赖firefox中的内置pdf.js浏览器扩展程序,而是make your own updated version based on the latest pdf.js source或目标another pdf library并使用它与浏览器无关的API渲染和显示你的pdf。

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

  • 确保您的服务器上安装了ZapfDingBats Font。我还没有证实这一点,但本应解决此问题的提交似乎增加了对此字体的支持,因此值得尝试确保在ColdFusion服务器上可以访问此字体,然后尝试预览在Firefox中呈现的pdf。

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

  • 将页面转换为HTML5(如果您还没有),然后添加HTML5 shiv(因此可以在较旧的浏览器上使用HTML5功能)和CSS normalizer ,并使用这些最佳设置测试问题是否仍然存在。值得一提的是确保在HTML5标准下以不同的方式处理问题,因为不是每个人都遇到与您相同的问题。

  • 最后,请确保使用HTML validator通过ColdFusion输出将HTML呈现为有效标记。

除此之外,在mozilla团队更新嵌入式pdf查看器之前,您无法做很多事情。但由于这个问题只出现在firefox查看器中,而不是pdf本身,因此由您来决定是否是一个交易破坏者,并寻找替代方案。

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜

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

ZapfDingbats not rendering in Firefox version 34.0.5 via pdf.js