为什么包含透明元素的 .pdf 文件不能正确打印?

Nic*_*las 8 pdf printing evince

我最近遇到了打印包含透明元素的 .pdf 文件的问题。我在打印使用 LaTeX 创建的文档时第一次注意到它,其中包含带有 alpha 通道的嵌入 .png 图像和带有透明元素的嵌入 .pdf 图形。该文档在屏幕上看起来不错,但在打印时,包含嵌入图形的页面似乎以低分辨率进行了位图处理。

我后来发现在单独打印某些 .pdf 数字时也会发生这种情况,因此问题与 LaTeX 无关。我还发现在Linux下用Adobe Reader打印文档一般都可以,但打印时间很长。这些文档在 Windows 中使用 Adob​​e Reader 也可以正常打印。这表明问题出在 Evince(默认的 .pdf 查看器)或文档和打印机之间的打印子系统中。我推测 Linux 中的 Adob​​e Reader 不受此问题的影响,因为它以可接受的分辨率对页面图像本身进行光栅化,或者以不同的方式与打印机进行通信。不幸的是,我对 Ubuntu 的打印子系统知之甚少,无法找到问题的根源,但这绝对是一个错误。

我使用的是 Ubuntu 12.04、Evince Document Viewer 3.4.0,使用 poppler/cairo (0.18.4) 和 CUPS 1.5.3

有许多相关的问题,但以下两个是最相关的:

拼合 PDF 透明度- 这里最好的答案是在 Windows 中使用 Acrobat Professional 来拼合透明度,但我无法轻松访问该软件。

为什么包含在文档中的某些矢量图形会强制对整个页面进行光栅化并随后破坏杯子中的文本外观?- 这里最好的答案是使用 ghostscript 将 .pdf 转换为不支持透明效果的版本,但这只是光栅化文件而不是扁平化透明度。

这些问题的答案都没有真正触及问题的根源,即为什么文件在 Windows 中的 Adob​​e Reader 中打印正常(以及在 Linux 中,尽管速度很慢),但在默认的 .pdf 查看器 Evince 中却不能打印?

我自己的解决方法只是首先确保 .pdf 数字中没有透明元素。在透明效果必不可少的地方,我将图形以足够高的分辨率保存为 .png 以进行打印。如有必要,可以使用 Gimp 删除任何 .png alpha 通道。我发现没有办法在不光栅化的情况下在 Linux 中展平 .pdf。

任何人都可以提出解决方案或至少更好的解决方法吗?

小智 0

尝试使用Okular
说一下有没有帮助。
您可以使用apt install okular


小智 0

我发现的另一个解决方法是将这些 PDF 转换为 600 DPI.djvu文件:

pdf2djvu -d 600 file.pdf > printable.djvu
Run Code Online (Sandbox Code Playgroud)

当然,它不再是 PDF,但这些文件仍然可以通过 Evince 或 Okular 打开,并且不需要 Adob​​e Acrobat。

更多详细信息可以在https://feeding.cloud.geek.nz/posts/printing-hard-to-print-pdfs-on-linux/找到。