展平 PDF 透明度

展平 PDF 透明度

我有一个使用 Inkscape 制作的 PDF,它使用了透明颜色。此图像应在 LaTeX 文档中使用。

虽然保留透明度对于编辑来说很好,但对于打印来说却是一个问题。打印通常涉及 PDF 到 PS 的转换。由于 Postscript 不支持透明度,因此需要

  • 扁平化,即创建一个不带透明度的矢量图形

或者

  • 光栅化,即渲染位图图像。

当使用 Evince(或 Cairo 或 Ghostscript)打印(或转换为 PS)包含此类图形的 PDF 文档时,整个页面将呈现为位图,导致字体变得丑陋(与其他页面不同)。(Adobe Acrobat 可以很好地处理此类 PDF。)

不幸的是,将 PDF 图形转换为 EPS(在将它们包含在 LaTeX 中之前)并没有太大帮助,因为 pdftops 和 pdf2ps(再次,Cairo 或 Ghostscript)都会将图像栅格化,即渲染位图(保存为 EPS)。(这稍微好一点,因为它不会影响整个页面,但我仍然更喜欢矢量图形。)

如何使用 Inkscape 或 Linux 上的其他软件展平透明度?

答案1

解决不良光栅化的一种方法是手动将 PDF 文档转换为 postscript,因为当您通过 evince 或任何 gui 调用 CUPS 时,它无论如何都会被转换。

您可以尝试pdftops -r 1200 document.pdf将分辨率从低默认值 300 提高,然后打印生成的 PostScript。但是,对于正在使用的打印机,这并没有带来显著的改进。带有和不带有透明图像的页面上的常规文本看起来仍然不同——模糊与清晰。

因此,我最终使用 Acrobat Professional(在 Windows 计算机上)来拼合我的 Latex 文档中使用的透明图像,这获得了最佳效果。在高级打印设置中检查是否Transparency Flattener Preset[High Resolution]。我的同事提到,也许可以将 pdf 文件直接通过 FTP 传输到现代激光网络打印机,从而绕过 PostScript 转换。我还没有尝试过。

如果有仅适用于 Linux 的解决方案来解决这个问题就太好了。

答案2

我遇到了同样的问题,这是我的解决方案(供将来参考):

我尝试了很多方法,到目前为止,我在网上找到的最佳解决方案是使用 和 将 PDF 完全渲染为图像pdf2psps2pdf13但结果并不令我满意,因为全部矢量形状丢失了。我想只渲染关键部分,但保留矢量图形。

对我来说,诀窍是隔离 Inkscape 中的所有关键部分并将它们放在单独的图层上(在我的图像中,这是所有阴影)。我只使这一层(和背景层)可见并将其导出为 PNG,有效地渲染了所有透明效果,但只有它们。我将其导入回来并在新图层中使用。翻转所有图层可见性(透明层:关闭,所有其他图层:打开)后,导出的 PDF 与 LaTeX 完美兼容,无需将整个页面渲染为图像即可打印。

总结:

  1. 将所有有问题的透明度隔离到一层(透明度蒙版、阴影等)
  2. 仅使有问题的图层和背景可见
  3. 导出为 PNG
  4. 导入刚刚创建的 PNG 并用作背景
  5. 使除有问题的图层之外的所有图层可见
  6. 导出为 PDF
  7. 微笑 :)

答案3

我使用 Ubuntu/Gimp 打开 pdf 文件并每次打印一页并检查打印预览。

答案4

pdftops -origpagesizes input.pdf output.ps

然后

ps2pdf -r600x600 output.ps input-new.pdf

相关内容