Вопрос Как конвертировать PDF в изображение?


У меня есть требование конвертировать страницы PDF в изображения. Существует фоновое изображение с некоторым текстом, поэтому, когда я сохраняю это как изображение, только фоновое изображение сохраняется.

Доступно ли какое-либо программное обеспечение для того, чтобы полная страница могла быть преобразована в изображение?


247
2018-06-23 10:16


происхождения


Видимо, это также возможно с inkscape: stackoverflow.com/a/15484727/32453 - rogerdpack


ответы:


  1. устанавливать ImageMagick,

  2. Использование терминала, на котором находится PDF-файл:

    • Полный документ:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Для одной страницы:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Посредством чего:

  • PNG, JPG или (практически) любой другой формат изображения.

  • -density xxx установит DPI для xxx (общие - 150 и 300).

  • -quality xxx будет установлено сжатие xxx для файлов PNG, JPG и MIFF (100 означает отсутствие сжатия).

  • [666] будет конвертировать только 667-ю страницу в PNG (нулевая нумерация так [0] 1-я страница).

  • Все другие варианты (например, обрезка, оттенки серого и т. Д.) Можно просмотреть на веб-сайте Изображение Magic,


235
2018-06-23 10:25



Ответ как есть, но разрешение очень плохое. Поэтому в настоящее время нет полезного ответа. Возможно, если конвертер имеет некоторые параметры, которые можно указать, это может измениться. - Elijah Lynn
Этот ответ намного выше askubuntu.com/a/50180/11929 - Elijah Lynn
Вы можете изменить плотность, добавив -density 300 параметр - OHLÁLÁ
Изображение в вашем ответе нарушено. Возможно, вам следует его обновить. - Petr R.
Так может ли кто-нибудь подтвердить, что определение плотности делает его «хорошим», как другие ответы здесь, или нет? Также как примечание для последователей, ImageMagick обращается к «ghostscript» для фактического преобразования из pdf в png ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1 и если вы convert: no images defined output.png это означает, что у вас нет установленного ghostscript ... - rogerdpack


Вы можете использовать pdftoppm конвертировать PDF в PNG:

pdftoppm input.pdf outputname -png

Это будет выводить каждую страницу в формате PDF с использованием формата outputname-01.png, с 01 являющийся индексом страницы.

Преобразование одной страницы в PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

+ Изменить {page} на номер страницы. Он индексируется в 1, поэтому -f 1 будет первой страницей.

Указание разрешения преобразованного изображения

Разрешение по умолчанию для этой команды - 150 DPI. Увеличение его приведет к большему размеру файла и более подробной информации.

Чтобы увеличить разрешение конвертированного PDF, добавьте параметры -rx {resolution} а также -ry {resolution}, Например:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

273
2018-06-23 11:07



Огромное спасибо. Намного лучше качество, чем с imagemagick или graphicsmagick! - dAnjou
pdftoppm намного быстрее, чем конвертировать - zuo
Не могу поверить, насколько это было легко! И пакет уже установлен по умолчанию! Любил. БЛАГОДАРЯ! - Rosamunda
Это действительно намного лучше, чем imagemagick. Imagemagick действительно изменил цвета неожиданным образом в моем случае! - NoBackingDown
это хорошо !, но немного легче писать -r 300 вместо того, чтобы указывать разрешения x и y независимо, когда вы хотите установить их на одно и то же значение. - mlc


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


17
2018-06-23 10:29





В настоящее время принятый ответ выполняет эту работу, но приводит к увеличению размера а также страдает от потери качества.

Метод в ответе Вот приводит к результату, который сопоставим по размеру с входом и не страдает от потери качества.

TLDR - Использовать pdfimages : pdfimages -j input.pdf output 

Цитирование связанного ответа:

Непонятно, что вы подразумеваете под «потерей качества». Это может означать много   разных вещей. Не могли бы вы разместить несколько примеров для иллюстрации?   Возможно, вырезать один и тот же раздел из низкого качества и хорошего качества   (как PNG, чтобы избежать потери качества).

Возможно, вам нужно использовать -density сделать конверсию на более высоком уровне   дюйм:

convert -density 300 file.pdf page_%04d.jpg

(Вы можете добавить -units PixelsPerInch или -units PixelsPerCentimeter если необходимо. Моя копия по умолчанию равна ppi.)

Обновить:  Как вы указали, gscan2pdf (то, как вы его используете) является просто оболочкой для pdfimages (из Poppler). pdfimages   не делает то же самое, что convert когда дается PDF как   вход.

convert берет PDF, делает его с некоторым разрешением и использует   в результате получается растровое изображение в качестве исходного изображения.

pdfimages просматривает PDF для встроенных растровых изображений и   экспортирует каждый файл в файл. Он просто игнорирует любой текст или вектор   рисование команд в PDF.

В результате, если у вас есть PDF, это всего лишь оболочка вокруг   серия растровых изображений, pdfimages будет намного лучше выполнять извлечение   их, потому что он дает вам необработанные данные в исходном размере. Вы   вероятно, также хотят использовать -j вариант pdfimages, поскольку   PDF может содержать необработанные данные JPEG. По умолчанию, pdfimages новообращенные   все в формате PNM и преобразование JPEG> PPM> JPEG - это потеря   обработать.

Поэтому постарайтесь

pdfimages -j file.pdf page

Вам может потребоваться или не обязательно следовать этому с помощью convert в .jpg шаг   (в зависимости от формата растрового изображения, который использовался в PDF).

Я пробовал эту команду в PDF, который я сделал из последовательности   изображений JPEG. Выбранные файлы JPEG были байтами для байтов, идентичными   исходные изображения. Вы не можете получить более высокое качество, чем это.


9
2018-03-12 13:14





Если ваши PDF-файлы сканируются, изображения уже хранятся как часть pdf. вам просто нужно извлечь их с помощью pdfimages:

pdfimages my-file.pdf prefix 

6
2017-09-18 10:14



Это идеальное решение для отсканированных PDF-файлов, так как с помощью этой команды вы можете с одной командой извлекать исходные jpg и без дополнительных рекомпрессии. - Jose Gómez


Чтобы получить одну страницу из gm convert, добавьте [N] (с номером страницы, начинающимся с 0), в имя PDF, т. Е. gm convert foo.pdf[11] out.png чтобы получить 12-ю страницу из PDF.

Для pdftoppm использование -f N -singlefile, где N - номер страницы, начинающийся с 1, т. е. pdftoppm -f 12 -singlefile foo.pdf out для того же результата. Кажется, что всегда добавляется «.png» к выходному имени файла, и нет способа остановить это.


3
2018-04-02 21:44





Вы можете использовать преобразование и указать более высокую плотность, используя -density вариант.

например. convert -d 300 foo.pdf bar.png


2
2017-07-24 02:23



можете ли вы объяснить больше о том, что такое плотность и что она может сделать? - Ten-Coin
@AgentCool Указывает горизонтальную и вертикальную плотность изображения (в ppi). - Arjun