如何使用Ghostscript将PDF转换为PNG?

8

通常我可以使用Ghostscript命令将PDF转换为PNG:

gs \
 -q \
 -dNOPAUSE \
 -dBATCH \
 -sDEVICE=pnggray \
 -g2550x3300 \
 -dPDFFitPage \
 -sOutputFile=output.png \
  input.pdf

但是对于一些PDF文件,这种方法并不适用。例如,上述命令将此PDF文件转换为此PNG -- 原始的PDF只是PNG左下角的一个小图像,而不是填满整个页面。
有没有更可靠的方式使用ghostscript将PDF转换为PNG,或者其他命令行工具?
注意:如果我通过OS X上的Preview中的“打印 -> 另存为pdf”生成新的PDF文件,则该命令正常工作。
1个回答

8

只需使用 ImageMagick的convert

convert foo.pdf foo.png

你可以通过格式字符串获得更精确的页面控制,例如:
convert foo.pdf "foo-%03d.png"

当然,还有许多其他的ImageMagick选项,但大多数情况下您只需要上面的基本命令。

编辑:关于您的“bad.pdf”:

简单来说,您只需要在gs命令中添加选项-dUseCropBox或在convert命令中添加-define pdf:use-cropbox=true选项。

gs \
 -q \
 -dNOPAUSE \
 -dBATCH \
 -sDEVICE=pnggray \
 -g2550x3300 \
 -dPDFFitPage \
 -dUseCropBox \
 -sOutputFile=output.png \
  input.pdf

或者

convert \
 -density 300 \
 -define pdf:use-cropbox=true \
  foo.pdf \
  foo.png

如果您在文本编辑器中查看PDF,您会发现指定了CropBox和MediaBox,并且CropBox要小得多。

1
这似乎无法解决我发布的有问题的PDF文件... 我发布的Ghostscript命令通常也有效,但对于该文件无效。 - Sharad Goel

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