展平PDF透明度


10

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

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

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

要么

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

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

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

如何在Linux上使用Inkscape或其他软件来提高透明度?


2
有趣的问题。将svg展平将非常复杂,因为每个可能的形状交集都需要使用复合填充来创建新的不透明形状。
artfulrobot 2012年

@artfulrobot确实如此。所得的矢量图形通常会变得非常复杂。但是,对于许多典型的矢量艺术线条图形,结果在现代Postscript打印机上仍应能很好地工作。
1

我发现最好的方法是繁琐的手动方法,包括在第一步之后重新绘制:使用inkscape将pdf转换为svg,在良好的文本编辑器中打开svg。用“ opacity:1”(正则表达式版本)替换所有出现的“ opacity:[0] [0-9 \。]”,或找到“ opacity:0”。并手动替换为不透明度1(乏味的版本)。在inkscape中打开svg,使其再次看起来不错(最困难的部分),而不是返回pdf并转到eps。
克里斯H

Answers:


5

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

您可以尝试pdftops -r 1200 document.pdf从较低的默认值300提高分辨率,然后打印结果后记。但是,在打印机工作的情况下,并没有带来明显的改善。带有和不带有透明图像的页面上的常规文本看起来仍然不同-模糊与清晰。

因此,我最终使用Acrobat Professional(在Windows机器上)来平整我的乳胶文档中使用的透明图像,从而获得最佳效果。检查Transparency Flattener Preset是否位于[High Resolution]高级打印设置中。我的同事提到,也许可以不使用Postscript转换,而直接将pdf文件通过FTP直接传输到现代的Laserjet网络打印机。我还没有尝试过。

拥有仅Linux解决方案可以很好地解决这个问题。


1

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

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

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

TL; DR:

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

0

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


1
问题不是透明的背景,添加白色背景并不能解决问题。图像问题在其他(不透明)形状的顶部使用半透明形状。SVG和PDF支持此功能,但PS不支持。
1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.