展平PDF透明度

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

虽然保留透明度非常适合编辑,但它可能是打印的问题。 打印通常涉及PDF到PS的转换。 由于Postscript不支持透明度,因此这需要

  • 平整,即创建一个无透明度的矢量图形

要么

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

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

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

如何在Linux上使用Inkscape或其他软件压缩透明度?

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

您可以尝试使用pdftops -r 1200 document.pdf将分辨率从低默认值300提高,然后打印生成的postscript。 然而,随着打印机的工作,这并未产生显着的改进。 带有和不带透明图像的页面上的常规文本看起来仍然不同 – 模糊与清晰。

所以我最终使用Acrobat Professional(在Windows机器上)来平整我的乳胶文档中使用的透明图像,从而获得最佳效果。 检查高级打印设置中的Transparency Flattener Preset是否为[High Resolution] 。 我的同事提到,可以将pdf文件直接FTP到现代的laserjet网络打印机,绕过postscript转换。 我没试过这个。

很高兴有这个问题的Linux解决方案。

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

我尝试了很多东西,到目前为止,我在互联网上找到的最佳工作解决方案是将PDF完全渲染为带有pdf2psps2pdf13的图像,但结果对我来说并不令人满意,因为所有的矢量形状都丢失了。 我想只渲染关键部分,但保留矢量图形。

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

TL; DR:

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

一种方法是在Inkscape中制作与您的页面大小相同的白色框并将其发送到底层。 这将导出您的图像与白色背景而不是透明的背景。

 pdftops -origpagesizes input.pdf output.ps 

然后

 ps2pdf -r600x600 output.ps input-new.pdf