我们有一个系统,可以将报告渲染为 PDF,并在浏览器中为用户显示。在浏览器中,文档始终显示正常,但在一台机器上打印时,有时将报告中的某些数据更改为看似随机的字符。
以下是它插入的字符串的一些示例:
Ebuf;
Bvhvt ul1: -!3122
Ti jqqf e!Wjb;
Nfttf ohf s!Tf swjdf
另外,字符间距很奇怪。有时会写出相互重叠的字符。
我注意到乱码文本中有一些重复,所以我在 Google 中输入了其中几个,结果出乎意料地得到了很多结果。这是我搜索的字符串:pdf cjmp ebuf nftf up!
Google 搜索摘要包含乱码文本。但是,当我在 Google 中点击这些链接时,我得到的是完全可读的 PDF 文件。就好像 Google 的 PDF 爬虫有同样的错误一样。
有人解决了这个问题吗?这是 Acrobat Reader 的一个错误吗?
答案1
我注意到有很多关于如何解决此打印问题的好建议,但我认为发布对根本原因的解释可能会很有趣且有用。
看起来这些 PDF 印刷错误是由于字符编码问题造成的。所有 ASCII 字符都显示为比实际高 1(参见ASCII 字符表在这里)。
例如,字母“D”显示为“E”,字母“b”显示为“a”。白色“空格”显示为“!”,“:”显示为“;”。 *请注意,乱码 PDF 中的空格没有任何意义。“空格”显示为“!”。
以下是原始帖子中的示例字符串:
Ebuf;
Bvhvt ul1: -!3122
Ti jqqf e!Wjb;
Nfttf ohf s!Tf swjdf
纠正“+1”编码错误,我们得到:
Date:
Augustk09, 2011
Shipped Via:
Messenger Service
我怀疑该l
示例第 2 行的 可能是一个!
,它将是一个“空格”,因此正确的消息应为:
Date:
August 09, 2011
Shipped Via:
Messenger Service
答案2
解决许多 Acrobat 打印问题的一个方法是“打印为图像“。如链接所示,您可以在打印时选择“高级”按钮。不幸的是,这也可能意味着打印作业会变得大得多(这取决于打印机和作业)。
您可以做的另一件事是尝试使用不同的 PDF 阅读器(例如 Foxit 或 CutePDF),但组织阅读器可能会使这变得不可能。
答案3
简短答案 取消选中 Acrobat Printer 中的“依赖系统字体”选项,方法如下:1. 请求打印页面(无论如何打印)。2. 选择“Acrobat”作为打印机(使用 Acrobat Distiller)3. 单击 Acrobat Printer 的“属性”选项卡。4. 转到对话框底部,取消选中“依赖系统字体”。5. 单击确定。然后再次单击“确定”进行打印。
长答案 今天,当我尝试使用 Acrobat 打印机(又称“distiller”)打印在线收据时,我遇到了同样的乱码问题。我安装了 Acrobat XI Pro。
以前,当我遇到同样的问题时,我使用了“打印为图像”选项,虽然问题得到了解决,但是却花费了大量的代价来创建一个巨大的数字图像文件,而真正的 Acrobat 图像相比之下要小得多。
今天,在搜索“打印为图像”选项时,我注意到在第一个 Acrobat 打印机属性对话框窗口的底部附近有一个复选框,用于启用“依赖系统字体”。无论如何,这似乎是一个糟糕的选择,因为您永远不知道系统的字体是否与文档字体完全匹配。如果它们不完全匹配,我认为必须执行某种替换逻辑。如果它找不到接近的视觉相关项,它可能会使用一些疯狂的东西或只是将文件扔进垃圾桶(它看起来确实像这样 :-)
于是,我取消了该选项,然后,瞧,页面打印出来时所有文本都正确了。我以为文本背景是浅灰色,所以打印到 Microsoft XPS 上,这是 Acrobat 的一个不错的替代品。它也显示了灰色背景,所以我假设当我单击网页的“打印页面”按钮时显示的网页也显示灰色背景,而且它确实有相同的灰色背景。字体也完全匹配,所以我认为一切都正确。
所以,问题解决了。当我重复此方法时,我注意到该选项已重新启用,因此您必须每次都这样做,或者找到永久将其设置为禁用的选项。目前,我将保留判断是否将其永久化并在 Acrobat 决定崩溃时取消选中它。
最后,在我的一次测试中,我确实遇到了一个 Acrobat 文本日志文件,其中显示“未找到字体”,进一步验证了我对问题的假设。
[未经请求的意见] 我和许多其他人一样,迫不及待地希望 Adobe 倒闭或变得谦逊一些,这样我们就可以购买和拥有自己的产品,而不是被迫支付黑手党费用或失去使用我们产品的资格。目前,我将继续使用最后可购买的版本,直到我被迫寻找其他地方。竞争正在慢慢逼近。[长篇大论结束]
希望有所帮助。
答案4
我也时不时遇到这个问题。正如评论所指出的,这个问题很难重现。
但是,我注意到,在我的系统中,这种情况几乎总是发生在打印作业被分配并且我在打印作业实际开始之前关闭 Adobe Reader 时。尽管图形和其他几何方面都保持正常,但文档大部分内容中的文本都是乱码(带有方框、版权符号和扩展的 ASCII 字符等)。
除了你指出的解决方案之外,还有一个解决方案是不是关闭 Adobe Reader,至少直到打印完成。