将Ghostscript强制使用抗锯齿技术将PDF转换为PNG?

10

我正在使用 GPL Ghostscript 9.07 (2013-02-14) 在 OS X (10.8.4) 上将许多 PDF 转换为 PNG。

它的工作正常,除了其中一个 PDF 会产生锯齿状边缘的 PNG。换句话说,由于某些原因,Ghostscript 关闭了该特定 PDF 的抗锯齿功能。

相关PDF文档

输出结果:

enter image description here

在其他情况下它的工作正常(样例: pdf -> png)。

我使用的命令是:

gs -dNOPAUSE -dBATCH -dPDFFitPage -sDEVICE=pngalpha -g200x150 -sOutputFile=01.png 01.pdf

有没有办法强制Ghostscript在处理该PDF时使用抗锯齿技术?

如果您有任何建议,请提供。


所以我通过将PDF转换为SVG,并使用RSVG(rsvg-convert)将SVG转换为PNG来解决了我的问题。 - Dae
3个回答

13

问题是关于从PDF转换成PNG而不是JPEG。 - Dae
8
值得注意的是,这里起作用的是选项“-dTextAlphaBits=4”和“-dGraphicsAlphaBits=4”。其他选项可能根据您的情况需要或不需要。 - Alex Trueman
gs -dSAFER -dBATCH -dNOPAUSE -r300 -sDEVICE=png16m -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=output.png input.pdf 就可以了。 - vstepaniuk

3
您可以尝试使用-dGraphicsAlphaBits=,其值可为1、2或4,取决于是否有所改善。对我而言,它对低分辨率下的小图形有所改进,但由于其具有奇怪的曲线,因此效果不如预期。

或者您可以使用其中一个抗锯齿设备(例如tiffscaled),这些设备更加灵活。虽然PNG输出没有抗锯齿设备,但将TIFF转换为PNG非常简单。

顺便说一句,您的PDF文件特别关闭了组件上的抗锯齿功能:

8 0 obj
<</AntiAlias false/ColorSpace/DeviceCMYK/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 10 0 R/ShadingType 2>>

您可以尝试将AntiAlias更改为true,看看会发生什么,但我怀疑这不会产生影响,因为我相当确定抗锯齿是应用于阴影的内部渲染而不是边缘。


  1. 当我将Antialias设置为true时,没有任何变化(必须使用pdftk解压缩和压缩文件才能进行编辑)。
  2. 使用-dGraphicsAlphaBits=4对于锯齿状边缘没有任何改变。
  3. Tiffscaled - 是的,生成的图像似乎是抗锯齿的,但是是灰度的,并且背景填充为白色而不是透明的(我想这是TIFF的限制)。
- Dae
同时还有PostScript和PDF。在这些成像模型中,背景始终假定为不透明的白色,除非您在其中特别绘制其他内容。它从未在这些成像模型中是“透明”的。如果您阅读您在Bugzilla中打开的错误线程,您将看到为什么其他选项不起作用,您需要使用其中一个“缩放”设备。 - KenS

1
您可以尝试使用-dDOINTERPOLATE,它使用Mitchell滤波函数来缩放每个输出像素的贡献。

很遗憾我没有看到任何变化,但感谢您的建议。 - Dae
1
-dDOINTERPOLATE只影响图像,不影响这个文件使用的着色词典。 - KenS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接