Как извлечь изображения из PDF в Ubuntu с помощью pdfimages
Коротко: что делает pdfimages
pdfimages — это утилита командной строки для извлечения изображений, встроенных как объекты в PDF. Однострочное определение: она сканирует PDF и для каждого встроенного изображения создаёт файл формата PPM, PBM или JPEG.
Важное замечание
- pdfimages извлекает именно встроенные в PDF изображения, а не «скриншоты» страниц. Если PDF содержит растровую картинку, полученную путём рендеринга страницы (например, отсканированные страницы, вставленные как единый растр), pdfimages может не вернуть отдельные элементы.
Установка
Для Ubuntu и Debian-подобных дистрибутивов установите пакет poppler-utils:
sudo apt-get update
sudo apt-get install poppler-utilsАльтернативы для других систем:
- Fedora/RHEL:
sudo dnf install poppler-utils - macOS (Homebrew):
brew install poppler
Пакет poppler-utils содержит не только pdfimages, но и другие утилиты для работы с PDF.
Базовое использование
В базовом варианте pdfimages принимает два аргумента: входной PDF и путь/префикс для выходных изображений.
Пример: извлечём изображения из файла christmas_story.pdf и сохраним их в папку pdfimages:
pdfimages /home/himanshu/Downloads/christmas_story.pdf /home/himanshu/Downloads/pdfimages/Посмотреть полученные файлы можно командой:
ls /home/himanshu/Downloads/pdfimages/Вывод может выглядеть так:
-000.ppm -001.ppm -002.ppm -003.ppm -004.ppm -005.ppm -006.ppm -007.ppmПо умолчанию имена файлов начинаются с дефиса - и номера. Вы можете добавить префикс, указав его в конце пути. Пример с префиксом image:
pdfimages /home/himanshu/Downloads/christmas_story.pdf /home/himanshu/Downloads/pdfimages/imagels /home/himanshu/Downloads/pdfimages/image-000.ppm image-001.ppm image-002.ppm image-003.ppm image-004.ppm image-005.ppm image-006.ppm image-007.ppmПример вывода, демонстрирующий пустые и полезные изображения:

Опции, которые часто используются
- -j — сохранять DCT-изображения как JPEG (все недекодированные или не-DCT останутся в PBM/PPM).
- -f <номер> — начать со страницы <номер> (нумерация страниц начинается с 1).
- -l <номер> — закончить на странице <номер>.
Пример: извлечь изображения только с первой страницы и попытаться сохранить JPEG, если формат позволяет:
pdfimages -j -f 1 -l 1 /home/himanshu/Downloads/christmas_story.pdf /home/himanshu/Downloads/pdfimages/Вывод в целевой папке в этом случае может содержать меньше файлов — только те изображения, что на выбранной странице.
Почему иногда появляются «пустые» файлы
Иногда для одного визуального изображения в PDF pdfimages создаёт два объекта: сам растровый слой и маску/альфаканал или объект с нулевыми данными. В результате один файл может быть почти пустым. Это особенно часто встречается при использовании прозрачностей, масок слоёв или сложного векторного/растрового смешивания в исходном PDF.
Совет: чтобы быстро отфильтровать «пустые» PPM/PBM, используйте identify из ImageMagick или file для проверки размера/типa файла.
Когда pdfimages не подойдёт (примеры неудач)
- Отсканированные PDF, где страница — единый растровый слой: pdfimages может вернуть только «страничный» растр или ничего, если изображение встроено иначе.
- PDF с отдельными изображениями, но использующими редкие кодировки: некоторые форматы внутри PDF могут не конвертироваться в JPEG автоматически.
- Когда нужна постобработка (обрезка, сжатие, метаданные): pdfimages даёт «сырые» изображения, дальше придётся использовать дополнительные инструменты.
Альтернативные подходы
- pdftoppm (из пакета poppler-utils) — рендерит страницы в растровые изображения (полезно, если нужно получить изображение всей страницы).
- ImageMagick (convert/ magick) — для постобработки и конвертации форматов.
- mutool extract (из mupdf) — извлекает вложения и объекты PDF, иногда даёт другие результаты.
Мини-методология: «извлечение → фильтрация → конвертация»
- Извлечь всё с помощью pdfimages.
- Отсортировать по размеру/типу, чтобы исключить пустые объекты.
- Конвертировать PPM/PBM в нужный формат (JPEG/PNG) с помощью ImageMagick или mogrify.
Пример конвертации всех PPM в JPEG:
for f in /home/himanshu/Downloads/pdfimages/*.ppm; do
magick convert "$f" "${f%.ppm}.jpg"
doneКомандная шпаргалка (cheat sheet)
| Цель | Команда |
|---|---|
| Установить утилиту | sudo apt-get install poppler-utils |
| Извлечь все изображения | pdfimages input.pdf output_prefix |
| Извлечь JPEG (если DCT) | pdfimages -j input.pdf output_prefix |
| Извлечь только с 1 по 3 страницу | pdfimages -f 1 -l 3 input.pdf output_prefix |
| Просмотреть файлы | ls output_prefix* |
| Пакетная конвертация PPM → JPG | for f in output_prefix*.ppm; do magick convert “$f” “${f%.ppm}.jpg”; done |
Рекомендации по рабочему процессу (role-based checklists)
Для разработчика:
- проверяйте, встроено ли изображение как объект в PDF;
- используйте
pdfimages -list input.pdfдля списка объектов; - автоматизируйте фильтрацию пустых файлов скриптом.
Для дизайнера:
- извлекайте изображения в формате, удобно подходящем для редактирования (PPM → конвертируйте в PNG/TIFF);
- сохраняйте оригинальные метаданные, если они важны.
Для архивиста/библиотекаря:
- документируйте версию poppler-utils и ОС;
- сохраняйте оригинал PDF вместе с извлечёнными изображениями;
- проверяйте качество и полноту извлечения в выборке страниц.
Критерии приёмки
- Все встроенные изображения на выбранных страницах извлечены.
- Пустые или служебные объекты отфильтрованы или помечены.
- Формат выходных файлов соответствует требованиям (JPEG/PNG/TIFF).
Заключение
pdfimages — надёжный и быстрый инструмент для извлечения встроенных изображений из PDF. Он не заменяет полноценную обработку изображений, но идеально подходит для массового извлечения «сырых» объектов. Если нужно работать с изображениями, полученными рендерингом страниц, используйте pdftoppm или ImageMagick.
Дополнительные ресурсы
- Описание в man-странице:
man pdfimages
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента