我正在尝试使用Ghostscript将PDF文件转换为带有透明背景的PNG文件。然而,我无法成功地实现这一目标。我搜索了很多其他人尝试过类似事情的问题,但所有发布的解决方案(据我所知,它们都涉及指定-sDEVICE=pngalpha)都不能用于我的测试文件。此时,我非常希望更有经验的人给出任何建议或提示。
我的测试PDF位于此处:http://www.kolossus.com/files/test.pdf
问题可能在于该文件,但我不太确定。据我观察,它没有指定背景,当我使用像Photoshop或Illustrator之类的透明度应用程序打开文件时,它会显示透明背景。然而,当使用Adobe Reader之类的应用程序打开文件时,该文件将呈现为白色背景。我认为这更多是与渲染PDF文件的应用程序有关,而不是PDF文件本身 - Adobe Reader之类的应用程序假设您想查看打印文档的外观,因此始终在艺术作品后面显示白色画布 - 但我不能确定。
我正在使用以下gs命令:
gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r72 -sOutputFile=test.png test.pdf
这会生成一张PNG图片,该图片在文件中艺术品的边界框之外具有透明像素,但是所有在艺术品边界框内部的像素都被光栅化为白色背景。这对我来说是个问题,因为我的艺术品有需要保留在最终输出中的阴影和反锯齿边缘,不能用ImageMagick进行后处理。我生成的PNG示例与上面的pdf在同一位置,以.png结尾(stackoverflow不允许我在帖子中包含超过一个url)。有趣的是,我没有看到使用-dBackgroundColor标志产生任何效果,即使我将其设置为非白色,如-dBackgroundColor=16#ff0000。也许我对此标志语法的理解是错误的。
同样有趣的是,我没有看到使用-dTextAlphaBits=4 -dGraphicsAlphaBits=4标志尝试启用子像素反走样产生任何效果。我还希望获得有关如何在文本上启用子像素抗锯齿的任何建议。
最后,我在Mac OS 10.5.7上使用GPL Ghostscript 8.64,并且我正在尝试设置的渲染工作流程是从PrinceXML输出的PDF生成透明PNG图像。我直接调用Ghostscript进行光栅化,而不是使用ImageMagick,因为ImageMagick委托Ghostscript进行PDF光栅化,我应该能够通过直接调用GS来更好地控制光栅化。
谢谢您的帮助。
-Jon Wolfe
gs 9.02
栅格化PDF,这是两个具有透明填充的PDF叠加(使用pdftk
完成); 当我使用-r 150
栅格化时,只能看到顶部图层,而底部几乎看不见。阅读了这篇文章后,我尝试了-dMaxBitmap=2147483647
,不幸的是它对我没有用 - 但是然后我开始降低分辨率,直到我发现在我的情况下,-r80
最终正确地呈现颜色 - 这可能意味着它是相同的内存错误。幸运的是,gimp
对我有用。干杯! - sdaau-q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150
。我不知道它们中的任何一个是否有区别,它只是对我起作用了,所以我没有尝试进行更改。 - TheStoryCoder