Обратите внимание, что в этом вопросе конкретно задается вопрос об "Извлечении встроенных изображений из PDF". Ключевое слово - это экстрагирование! Это означает: у меня есть PDF-файл; в нем есть несколько изображений встроенный в него; как мне их вытащить!? Если это ваш вопрос, используйте pdfimages
в качестве основной ответ @pl1nk гласит.
Как преобразовать PDF-файл в набор изображений:
Однако многие люди, которые ищут в Google и натыкаются на этот вопрос (включая меня), ищут немного другой вопрос, даже не осознавая разницы до тех пор, пока спустя несколько часов не почувствуют разочарование. Итак, если вы ищете "Как преобразовать PDF в кучу изображений" вместо этого, что НЕ то же самое, что "как извлечь изображения из PDF", вот как: используйте pdftoppm
. "ПРОМИЛЛЕ" здесь - это формат изображения, так что это просто означает "PDF to image". Это работает очень хорошо, хотя и медленный для современной многоядерной системы, поскольку это однопоточное приложение и не использует преимущества нескольких ядер вычислительной мощности.
Ubuntu 18.04 поставляется с pdftoppm
версия 0.62.0. Проверьте свою версию с помощью pdftoppm -v
:
$ pdftoppm -vpdftoppm version 0.62.0Copyright 2005-2017 The Poppler Developers - http://poppler.freedesktop.orgCopyright 1996-2011 Glyph & Cog, LLC
Прочтите страницы руководства с man pdftoppm
чтобы увидеть все его многочисленные полезные функции.
Поддерживаемые форматы выходных изображений:
Как показано на справочных страницах, pdftoppm
позволяет выводить изображения в следующих форматах:
- Промилле (по умолчанию)
- PNG (с
-png
)
- JPEG (с
-jpeg
)
- РАЗМОЛВКА (с
-tiff
)
Он также позволяет указать вывод в монохромном режиме (-mono
) или оттенки серого (-gray
) (по умолчанию используется цвет), указать номера страниц, поместить выходные изображения в папку, обрезать и изменить размер, указать разрешение, указать качество jpeg (от 0 до 100), указать сжатие TIFF, обрабатывать только страницы с четными или нечетными номерами и т.д. Это работает очень хорошо и это ЧРЕЗВЫЧАЙНО ПОЛЕЗНО!
Вот несколько примеров того, как использовать pdftoppm
чтобы преобразовать PDF-файл в набор файлов изображений:
-
Выводите файлы ppm в виде pg-1.промилле, pg-2.промилле, pg-3.промилле, и т.д., с разрешением по умолчанию 150 точек на дюйм x и y:
pdftoppm mypdf.pdf pg
-
То же, что и 1, за исключением размещения всех выходных файлов в папке с именем изображения:
mkdir -p images && pdftoppm mypdf.pdf images/pg
-
[Мое любимое] Выводите изображения в папку "изображения" в jpeg формат с 300 Разрешение точек на дюйм x и y вместо 150 точек на дюйм по умолчанию. Обратите внимание, что выходные изображения имеют некоторый уровень сжатия jpeg по умолчанию и будут занимать примерно 0,1 ~ 1 МБ места на файл при разрешении 300 точек на дюйм и при условии стандартных страниц PDF размером 8,5 x 11 дюймов.
mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
-
Выводите изображения в папку "изображения" в jpeg формат с 300 Точек на дюйм с разрешением x и y, на высочайшее качество возможен уровень jpeg! quality
значения могут варьироваться от 0 до 100. Смотрите справочные страницы. При качестве, установленном на 100, и разрешении, установленном на 300 точек на дюйм, ожидайте, что каждый файл jpeg будет занимать увеличьте объем хранилища в 2 раза, как указано выше, с размерами в диапазоне от ~ 0,2 ~ 2 МБ, в зависимости от содержимого, и предполагающими страницы формата PDF размером 8,5 x 11 дюймов.
mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
-
Вывод несжатый .tif* изображения с **300 Разрешение точек на дюйм x и y. Размер выходного файла составит примерно 25 МБ при разрешении 300 точек на дюйм и 8,5 "x 11" страниц PDF.
mkdir -p images && pdftoppm -tiff -r 300 mypdf.pdf images/pg
Обратите внимание, что вывод каждой страницы выше с разрешением 300 точек на дюйм занимает 15 ~ 45 секунд на моем медленном компьютере, что означает, что PDF-файл размером 100 страниц может занять до 100 x 45/60 = 75 минут или около того, например, для изображений jpeg с разрешением 300 точек на дюйм.
Чтобы определить, сколько времени занимает процесс на вашем компьютере, просто поместите time
команда перед pdftoppm
часть любой из приведенных выше команд. Пример: вот результат преобразования PDF-файла, в котором было 3 страницы:
$ mkdir -p images && time pdftoppm -tiff -r 300 testpdf.pdf images/pgreal 1m47.572suser 1m45.675ssys 0m1.536s
Это означает, что общее время реального времени составило 1m47.572s, или 60 + ~ 48 = 108 секунд, что составляет 108/3 = 36 секунд на страницу.
Связанный:
- [Как превратить PDF-файл в PDF-файл с возможностью поиска w/
pdf2searchablepdf
] Как превратить pdf-файл в текстовый pdf-файл с возможностью поиска?
- Как превратить pdf-файл в текстовый pdf-файл с возможностью поиска?
- Как конвертировать PDF в изображение?
- https://stackoverflow.com/questions/6605006/convert-pdf-to-image-with-high-resolution/58795684#58795684
- https://www.linuxuprising.com/2019/03/how-to-convert-pdf-to-image-png-jpeg.html
- Как программно определить DPI изображений в PDF-файле?