Как конвертировать PDF-файлы в PNG с помощью ghostscript? - PullRequest
8 голосов
/ 04 июня 2011

Обычно я могу использовать ghostscript для преобразования PDF-файлов в PNG с помощью команды:

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

Но это не работает для некоторых файлов PDF. Например, приведенная выше команда преобразует этот файл PDF в этот PNG - исходный PDF - это просто небольшое изображение в левом нижнем углу PNG вместо заполнения всей страницы. ,

Существует ли более надежный способ преобразования PDF-файлов в PNG с помощью ghostscript или, возможно, какого-либо другого инструмента командной строки?

Примечание. Если я создаю новый PDF-файл из проблемного с помощью команды «print -> save as pdf» в Preview в OS X, то команда работает нормально.

1 Ответ

7 голосов
/ 04 июня 2011

Просто используйте ImageMagick's convert.

convert foo.pdf foo.png

Вы можете более точно контролировать номер страницы с помощью строк формата, например ::100100

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

И, конечно, есть множество других опций ImageMagick, но основная команда выше - это все, что вам нужно в большинстве случаев.

Редактировать: о вашем "bad.pdf":

Краткий ответ - добавить опцию -dUseCropBox в команду gs или -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 намного меньше.

...