Как конвертировать PDF в PNG с помощью ghostscript?

Обычно я могу использовать 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-файл из проблемного с помощью команды «печать -> сохранить как pdf» в предварительном просмотре в OS X, то команда будет работать нормально.


person Sharad Goel    schedule 03.06.2011    source источник


Ответы (1)


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

convert foo.pdf foo.png

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

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

or

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

Если вы просматриваете PDF-файл в текстовом редакторе, вы можете увидеть, что CropBox и MediaBox указаны, и что CropBox намного меньше.

person rlibby    schedule 03.06.2011
comment
Похоже, это не помогает с проблемным pdf-файлом, который я опубликовал ... Команда ghostscript, которую я опубликовал, обычно также работает, но не для этого файла. - person Sharad Goel; 04.06.2011