У меня есть требование конвертировать страницы PDF в изображения. Существует фоновое изображение с некоторым текстом, поэтому, когда я сохраняю это как изображение, только фоновое изображение сохраняется.
Доступно ли какое-либо программное обеспечение для того, чтобы полная страница могла быть преобразована в изображение?
Вы можете использовать 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
IIRC GIMP способен использовать PDF-файлы, то есть преобразовывать их в изображения. Поэтому, если вы хотите сразу отредактировать изображения - GIMP - ваш друг.
В настоящее время принятый ответ выполняет эту работу, но приводит к увеличению размера а также страдает от потери качества.
Метод в ответе Вот приводит к результату, который сопоставим по размеру с входом и не страдает от потери качества.
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 были байтами для байтов, идентичными
исходные изображения. Вы не можете получить более высокое качество, чем это.
Если ваши PDF-файлы сканируются, изображения уже хранятся как часть pdf. вам просто нужно извлечь их с помощью pdfimages
:
pdfimages my-file.pdf prefix
Чтобы получить одну страницу из 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» к выходному имени файла, и нет способа остановить это.
Вы можете использовать преобразование и указать более высокую плотность, используя -density
вариант.
например. convert -d 300 foo.pdf bar.png