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


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

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


244
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] будет конвертировать только 666 страниц в PNG
    • все другие варианты (например, обрезка, оттенки серого и т. д.) можно просмотреть на веб-сайте Изображение Magic,

231
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

270
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


Если вы хотите конвертировать определенную страницу PDF в PNG, вы можете подключить pdftk в convert (описано выше) как это:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1
2017-11-06 05:11