Как конвертировать PDF в JPEG с низким разрешением (но хорошего качества)? - PullRequest
6 голосов
/ 21 сентября 2011

Когда я использую следующую команду ghostscript для создания эскизов jpg из PDF-файлов, качество изображения часто очень плохое:

gs -q -dNOPAUSE -dBATCH -sDEVICE=jpeggray -g465x600 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_lowres.jpg test.pdf

В отличие от этого, если я использую ghostscript для генерации png с высоким разрешением, а затем использую mogrify для преобразования png с высоким разрешением в jpg с низким разрешением, я получаю довольно хорошие результаты.

gs -q -dNOPAUSE -dBATCH -sDEVICE=pnggray -g2550x3300 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_highres.png test.pdf
mogrify -thumbnail 465x600 -format jpg -write pdf_to_highres_to_lowres.jpg pdf_to_highres.png

Есть ли способ достичь хороших результатов, минуя промежуточный шаг pdf -> high-res png? Мне нужно сделать это для большого количества PDF-файлов, поэтому я пытаюсь минимизировать время вычислений.

Вот ссылки на изображения, указанные выше:

  1. test.pdf
  2. pdf_to_lowres.jpg
  3. pdf_to_highres.png
  4. pdf_to_highres_to_lowres.jpg

Ответы [ 2 ]

5 голосов
/ 21 сентября 2011

Один из вариантов, который, похоже, значительно улучшит вывод: -dDOINTERPOLATE.Вот что я получил, выполнив ту же команду, что и вы, но с опцией -dDOINTERPOLATE:

JPEG with -dDOINTERPOLATE

Я не уверен, какой метод интерполяция использует этот методно это кажется довольно хорошим, особенно по сравнению с результатами без него.

PS Рассмотрим вывод изображений PNG (-sDEVICE=pnggray) вместо JPEG.Для большинства документов PDF (которые обычно имеют только несколько сплошных цветов) это более подходящий выбор.

3 голосов
/ 21 сентября 2011

Ваш PDF выглядит так, будто он уже является оберткой вокруг JPEG.

Попробуйте использовать программу pdfimages из xpdf для извлечения фактического изображения, а не рендеринга. в файл.

...