开发者

How do you convert PDFs to PNGs with ghostscript?

I'm usually able to use ghostscript to convert PDFs to PNGs with the command:

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

But this doesn't work for some PDF files. For example, the command above converts this PDF file to this PNG -- the original PDF is just a small im开发者_JS百科age in the lower left corner of the PNG, instead of filling the entire page.

Is there a more robust way to convert PDFs to PNGs with ghostscript, or perhaps some other command line tool?

Note: If I generate a new PDF file from the problematic one via "print -> save as pdf" in Preview on OS X, then the command works fine.


Just use ImageMagick's convert.

convert foo.pdf foo.png

You can have more precise control over the page number with format strings, e.g.:

convert foo.pdf "foo-%03d.png"

And of course there are the myriad other ImageMagick options, but the basic command above is all you need most of the time.

Edit: about your "bad.pdf":

The short answer is to add the option -dUseCropBox to your gs command or -define pdf:use-cropbox=true to the convert command.

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

or

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

If you view the PDF in a text editor you can see that a CropBox and a MediaBox are specified, and that the CropBox is much smaller.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜