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

327

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

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

Депендра Соланки
источник
Очевидно, это также возможно с inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

Ответы:

299
  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-я страница).

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

Binarylife
источник
2
Ответ работает, но разрешение очень плохое. Поэтому в настоящее время нет ответа, который является полезным. Возможно, если у convert есть какие-то параметры, которые можно указать, это может измениться.
Элайджа Линн
48
Этот ответ гораздо качественнее askubuntu.com/a/50180/11929
Элайджа Линн
6
Вы можете изменить плотность, добавив -density 300параметр
OHLÁLÁ
4
Так может кто-нибудь подтвердить, что указание плотности делает его «таким же хорошим», как и другие ответы здесь, или нет? Также как примечание для подписчиков, 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
4
Синтаксический анализ PDF в imagemagick отключен - bugs.archlinux.org/task/59778 - его можно включить вручную, отредактировав /etc/ImageMagick-7/policy.xmlфайл и удалив PDFиз<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor
393

Вы можете использовать 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
enzotib
источник
24
Огромное спасибо. Гораздо лучшее качество, чем с imagemagick или graphicsmagick!
Анжу
7
pdftoppm гораздо быстрее, чем конвертировать
zuo
4
Это действительно намного лучше, чем imagemagick. ImageMagick фактически изменил цвета неожиданным образом в моем случае!
NoBackingDown
13
это хорошо !, но это немного проще написать -r 300вместо того, чтобы указывать разрешения x и y независимо, если вы хотите установить для них одно и то же значение.
млк
2
У меня был намного больший успех с pdftoppm, чем с imagemagick.
Майкл Хейс
22

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

тессеракт
источник
GIMP действительно может открывать PDF-файлы, каждая страница в виде одного слоя. Выбор «Экспортировать как» позволяет сохранить только текущий слой, но вы можете легко удалить слой после экспорта и снова запустить «Экспортировать как».
Дан Даскалеску
12

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

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

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

Цитирую связанный ответ:

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

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

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 были побайтно идентичны исходным изображениям. Вы не можете получить более высокое качество, чем это.

Анмол Сингх Джагги
источник
8

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

pdfimages my-file.pdf prefix 
Vitoshka
источник
2
Это идеальное решение для отсканированных PDF-файлов, так как с помощью этой команды вы можете с помощью одной команды извлечь исходные файлы JPEG и без дополнительных повторных сжатий.
Хосе Гомес
3

Чтобы получить одну страницу из gm convert, добавьте [N] (с 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» к выходному имени файла, и нет никакого способа остановить это.

user3080602
источник
2

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

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

Арджун
источник
Можете ли вы объяснить больше о том, что такое плотность и что она может сделать?
14:04
1
@AgentCool Определяет горизонтальную и вертикальную плотность изображения (в ppi).
Арджун
2

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

pdftk document.pdf cat 12 output - | convert - document-page-12.png
IQAndreas
источник
1

В Master PDF Editor (версия 2.2) имеется эта опция. Откройте файл PDF и перейдите в «Файл»> «Экспорт в»> «Изображения». Он представляет диалог, в котором вы можете определить различные параметры для вывода. Очень полезно. Надеюсь, эта информация поможет.

порыв
источник
Это в бесплатной или платной версии? В моей версии опция неактивна? Значит ли это, что мне нужно платить? Есть платная версия?
Джошуа Робисон
0

PDF Mod также позволяет экспортировать изображения всех или отдельных страниц файлов PDF.

  • Открыть PDF файл в PDF Mod
  • Выберите страницу (ы) -
  • Редактировать> Экспорт изображений
nhylated
источник