我有一个使用 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 完全渲染为图像pdf2ps
,ps2pdf13
但结果并不令我满意,因为全部矢量形状丢失了。我想只渲染关键部分,但保留矢量图形。
对我来说,诀窍是隔离 Inkscape 中的所有关键部分并将它们放在单独的图层上(在我的图像中,这是所有阴影)。我只使这一层(和背景层)可见并将其导出为 PNG,有效地渲染了所有透明效果,但只有它们。我将其导入回来并在新图层中使用。翻转所有图层可见性(透明层:关闭,所有其他图层:打开)后,导出的 PDF 与 LaTeX 完美兼容,无需将整个页面渲染为图像即可打印。
总结:
- 将所有有问题的透明度隔离到一层(透明度蒙版、阴影等)
- 仅使有问题的图层和背景可见
- 导出为 PNG
- 导入刚刚创建的 PNG 并用作背景
- 使除有问题的图层之外的所有图层可见
- 导出为 PDF
- 微笑 :)
答案3
我使用 Ubuntu/Gimp 打开 pdf 文件并每次打印一页并检查打印预览。
答案4
pdftops -origpagesizes input.pdf output.ps
然后
ps2pdf -r600x600 output.ps input-new.pdf