我正在尝试使用 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,该 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 更好地控制光栅化。
谢谢你的帮助。
——乔恩·沃尔夫