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

Sha*_*oel 8 pdf postscript ghostscript

我通常可以使用ghostscript将PDF转换为PNG:

gs \
 -q \
 -dNOPAUSE \
 -dBATCH \
 -sDEVICE=pnggray \
 -g2550x3300 \
 -dPDFFitPage \
 -sOutputFile=output.png \
  input.pdf
Run Code Online (Sandbox Code Playgroud)

但这对某些PDF文件不起作用.例如,上面的命令将此PDF文件转换为此PNG - 原始PDF只是PNG左下角的一个小图像,而不是填充整个页面.

有没有更强大的方法使用ghostscript或其他一些命令行工具将PDF转换为PNG?

注意:如果我在OS X上预览中通过"print - > save as pdf"生成有问题的新PDF文件,那么命令工作正常.

rli*_*bby 7

只需使用ImageMagickconvert.

convert foo.pdf foo.png
Run Code Online (Sandbox Code Playgroud)

您可以使用格式字符串更精确地控制页码,例如:

convert foo.pdf "foo-%03d.png"
Run Code Online (Sandbox Code Playgroud)

当然还有无数其他的ImageMagick选项,但上面的基本命令是你大部分时间都需要的.

编辑:关于你的"bad.pdf":

简短的回答是将选项添加-dUseCropBox到gs命令或-define pdf:use-cropbox=trueconvert命令.

gs \
 -q \
 -dNOPAUSE \
 -dBATCH \
 -sDEVICE=pnggray \
 -g2550x3300 \
 -dPDFFitPage \
 -dUseCropBox \
 -sOutputFile=output.png \
  input.pdf
Run Code Online (Sandbox Code Playgroud)

要么

convert \
 -density 300 \
 -define pdf:use-cropbox=true \
  foo.pdf \
  foo.png
Run Code Online (Sandbox Code Playgroud)

如果在文本编辑器中查看PDF,则可以看到指定了CropBox和MediaBox,并且CropBox要小得多.