我最近在打印包含透明元素的 .pdf 文件时遇到了问题。我第一次注意到这个问题是在打印使用 LaTeX 创建的文档时,该文档包含带有 alpha 通道的嵌入式 .png 图像和带有透明元素的嵌入式 .pdf 图形。文档在屏幕上看起来不错,但打印时,包含嵌入式图形的页面会以低分辨率显示为位图。
我后来发现,在单独打印一些 .pdf 图形时也会发生这种情况,因此问题与 LaTeX 无关。我还发现,在 Linux 中使用 Adobe Reader 通常可以正常打印文档,但打印时间非常长。在 Windows 中使用 Adobe Reader 似乎也可以正常打印文档。这表明问题出在 Evince(默认的 .pdf 查看器)或文档和打印机之间的打印子系统中。我推测 Linux 中的 Adobe Reader 不受此问题的影响,因为它会以可接受的分辨率自行对页面图像进行栅格化,或者以其他方式与打印机进行通信。不幸的是,我对 Ubuntu 的打印子系统了解不够,无法找到问题的根源,但这肯定看起来像是一个错误。
我正在使用 Ubuntu 12.04、使用 poppler/cairo (0.18.4) 的 Evince Document Viewer 3.4.0 和 CUPS 1.5.3
有许多相关问题,但以下两个是最相关的:
展平 PDF 透明度- 这里最好的答案是使用 Windows 中的 Acrobat Professional 来拼合透明度,但我无法轻松访问该软件。
为什么文档中包含的一些矢量图形会强制光栅化整个页面,从而破坏杯子中文本的外观?- 这里最好的答案是使用 ghostscript 将 .pdf 转换为不支持透明效果的版本,但这只是栅格化文件而不是展平透明度。
这些问题的答案都没有真正触及问题的根源,即为什么文件在 Windows 中的 Adobe Reader 中可以正常打印(在 Linux 中也是如此,尽管速度很慢),但在默认的 .pdf 查看器 Evince 中却不行?
我自己的解决方法是首先确保 .pdf 图形中没有透明元素。当透明效果必不可少时,我会将图形保存为 .png,分辨率足够高,便于打印。如有必要,可以使用 Gimp 删除任何 .png alpha 通道。我发现在 Linux 中,如果不进行栅格化,就无法展平 .pdf。
有人可以提出解决方案或至少更好的解决方法吗?
答案1
尝试使用奥克拉尔。
说说是否有帮助。
您可以使用apt install okular
答案2
我发现的另一种解决方法是将这些 PDF 转换为 600 DPI.djvu
文件:
pdf2djvu -d 600 file.pdf > printable.djvu
当然,它不再是 PDF,但这些文件仍然可以通过 Evince 或 Okular 打开,并且不需要 Adobe Acrobat。
更多详情请访问https://feeding.cloud.geek.nz/posts/printing-hard-to-print-pdfs-on-linux/。
答案3
我发现,打印此类 PDF(包含(部分)透明度的 PDF)的一个简单且有用的解决方案是使用PDFium,其中 afaiu 在打印之前会进行自己的光栅处理,并且是PDF 查看器内置于铬合金以及许多其他铬基于浏览器,例如歌剧,维瓦尔第,…