Как извлечь и сохранить изображения из PDF в Linux

В этой статье подробно показаны практические примеры использования pdfimages, варианты вывода (PPM/PBM, JPG, PNG, TIFF), параметры для диапазонов страниц и паролей, а также советы и контрольные списки для разных ролей. Раздел «Когда это не подходит» объясняет альтернативные подходы.
Важно: когда в примерах команды окружены кавычками, НЕ вводите кавычки в командной строке, если мы не укажем иное.
Краткое объяснение
pdfimages — это инструмент из набора poppler-utils. Он извлекает встроенные в PDF растровые изображения и сохраняет их в виде отдельных файлов. По умолчанию для цветных изображений используется формат PPM, а для монохромных — PBM. Эти форматы просты и независимы от платформы.
Однострочное определение терминов:
- pdfimages — утилита для извлечения растровых изображений из PDF;
- PPM/PBM — простые форматы изображения (portable pixmap/bitmap);
- -j — опция для сохранения JPEG-данных как .jpg без перекодирования.
Установка poppler-utils (pdfimages)
Ubuntu / Debian:
sudo apt update
sudo apt install poppler-utilsFedora:
sudo dnf install poppler-utilsCentOS / RHEL (старые версии):
sudo yum install poppler-utilsArch Linux:
sudo pacman -S popplerЕсли у вас сервер без GUI, команды те же — работа в терминале.
Базовый пример использования
Откройте терминал (обычно Ctrl + Alt + T) и выполните команду:
pdfimages /home/lori/Documents/SampleWithImages.pdf /home/lori/Documents/ExtractedImages/imageПояснения:
- Первый путь — это ваш исходный PDF-файл.
- Второй путь — корневая папка и префикс имени для сохранённых изображений. Сам файл будет сгенерирован автоматически: image-000.ppm, image-001.ppm и т.д.
Важно: если вы хотите добавить префикс, просто измените последний сегмент пути (в примере это «image»).
Почему вы видите файлы .ppm и пустые файлы
По умолчанию pdfimages сохраняет изображения в родных форматах: PPM для цветных, PBM для монохромных. Иногда утилита создаёт по два файла для одного изображения: один — собственно изображение в исходном формате (например, .jpg), второй — служебный .ppm/.pbm или пустой файл. При просмотре миниатюр вы увидите, какие файлы содержат полезные данные.

Сохранение сразу в JPG
Если PDF содержит встроенные JPEG-данные и вы хотите получить .jpg без перекодирования, добавьте опцию -j:
pdfimages -j /home/lori/Documents/SampleWithImages.pdf /home/lori/Documents/ExtractedImages/imageОбратите внимание: главный файл для каждого извлечённого изображения будет .jpg, а сопутствующий пустой файл может остаться в формате .ppm или .pbm.

Другие форматы вывода
- PNG: добавьте опцию -png
- TIFF: добавьте опцию -tiff
Пример:
pdfimages -png /path/to/file.pdf /path/to/out/imagepdfimages попытается сохранить изображения в указанный формат, но поведение зависит от того, в каком виде данные хранятся внутри PDF.
Извлечение изображений на диапазоне страниц
- Начать с конкретной страницы: опция -f N
- Закончить конкретной страницей: опция -l N (это буква l, не цифра 1)
Пример: извлечь изображения, начиная со страницы 2, и сохранить как JPG:
pdfimages -f 2 -j /home/lori/Documents/SampleWithImages.pdf /home/lori/Documents/ExtractedImages/imageПример: извлечь все изображения до страницы 1 (включительно):
pdfimages -l 1 -j /home/lori/Documents/SampleWithImages.pdf /home/lori/Documents/ExtractedImages/imageМожно комбинировать -f и -l для конкретного диапазона.
Работа с PDF, защищёнными паролем
Если PDF защищён паролем владельца (owner password), используйте -opw ‘пароль’. Если защищён пользовательским паролем (user password), используйте -upw ‘пароль’. Используйте одинарные кавычки вокруг пароля в примерах shell.
pdfimages -opw 'password' -j /path/to/SampleWithImages.pdf /path/to/ExtractedImages/imageВажно: кавычки нужны, если в пароле есть специальные символы или пробелы.
Быстрая справка и man
Для полного списка опций выполните:
pdfimages -h
# или
man pdfimagesКогда pdfimages не подойдёт — альтернативы
- Если вам нужно извлечь векторные элементы (SVG, paths), pdfimages не подойдёт — он работает только с растровыми изображениями. В таких случаях используйте инструменты для конвертации страниц в SVG или для разбора содержимого PDF (например, mutool draw с выводом в SVG или библиотеки PyMuPDF/Poppler API).
- Если в PDF изображения встроены в виде XObject или в смешанном формате, pdfimages обычно справляется. Если нет, можно использовать pdftoppm для рендеринга страниц в растровые изображения (теряется оригинальное качество встроенных изображений, т.к. идёт рендеринг страницы).
- Для массовой автоматизации на сервере используйте библиотеку (PyMuPDF, pdfminer.six + Pillow) для более тонкого контроля.
Короткая рекомендация: если вам важны исходные встроенные биты изображения — pdfimages; если нужна картинка из визуального рендера страницы — pdftoppm или Ghostscript.
Пошаговый SOP для извлечения изображений (быстрая методика)
- Установите poppler-utils.
- Создайте папку для вывода: mkdir -p /путь/к/ExtractedImages
- Запустите pdfimages с нужными опциями (-j, -png, -tiff, -f, -l).
- Проверьте файлы в папке, оставьте только нужные форматы.
- При необходимости переконвертируйте файлы (ImageMagick: convert) или переименуйте.
Пример команд:
mkdir -p ~/Documents/ExtractedImages
pdfimages -f 2 -l 10 -j ~/Documents/SampleWithImages.pdf ~/Documents/ExtractedImages/scan
ls -lh ~/Documents/ExtractedImagesКонтрольный список по ролям
Desktop-пользователь:
- Установил poppler-utils;
- Проверил миниатюры в файловом менеджере;
- Сохранил нужные форматы (.jpg/.png).
Системный администратор:
- Автоматизировал задачу в скрипте;
- Обработал защищённые файлы с учётом безопасности паролей;
- Удалил временные служебные файлы.
Разработчик/интегратор:
- Использует библиотеку для парсинга при сложных кейсах;
- Пишет unit-тесты на ожидаемое число и форматы файлов.
Примеры использования в скриптах
Простой bash-скрипт для извлечения и удаления пустых файлов:
#!/bin/bash
infile="$1"
outdir="$2"
mkdir -p "$outdir"
pdfimages -j "$infile" "$outdir/img"
# Удалим пустые / слишком маленькие файлы
find "$outdir" -type f -size -1k -deleteМентальные модели и эвристики
- Если вы хотите оригинал без потери качества — используйте pdfimages.
- Если изображение на странице результат векторной отрисовки — извлечь как растровое изображение без рендера невозможно без рендеринга страницы.
- Всегда делайте проверку миниатюры или открывайте файл в просмотрщике, чтобы убедиться, что извлечённое изображение корректно.
Decision flow (простое дерево принятия решения)
flowchart TD
A[Нужно извлечь изображения?] --> B{Изображения встроены как растры?}
B -- Да --> C[Используйте pdfimages]
B -- Нет --> D[Рендер страницы: pdftoppm или Ghostscript]
C --> E{Нужен JPG без перекодирования?}
E -- Да --> C1[pdfimages -j]
E -- Нет --> C2[pdfimages -png/-tiff или по умолчанию](Если окружение не поддерживает mermaid, пропустите диаграмму и выполните шаги вручную.)
Критерии приёмки
- Все ожидаемые изображения извлечены в указанную папку;
- Формат файлов соответствует требуемому (.jpg/.png/.tiff) или исходному встроенному формату;
- Нет ошибок при выполнении команды; лог проверен;
- Служебные пустые файлы удалены или задокументированы.
Короткий глоссарий
- pdfimages — утилита извлечения растровых изображений из PDF.
- PPM/PBM — простые форматы изображений (portable pixmap/bitmap).
- -j — опция для сохранения JPEG-данных как .jpg.
- -f/-l — первая/последняя страницы для извлечения.
- -opw / -upw — пароль владельца / пользовательский пароль.
Советы по безопасности и конфиденциальности
- Никогда не храните пароли в открытом виде в скриптах; используйте защищённые хранилища или переменные окружения с ограниченным доступом.
- Обрабатывайте защищённые PDF на доверенных машинах.
Когда это не работает: примеры
- PDF, в котором изображение встраивается как вектор: pdfimages не извлечёт его как растровый файл.
- Защищённый PDF с нестандартным шифрованием может потребовать других инструментов.
- Если миниатюры в файловом менеджере пустые, проверьте реальные размеры файлов и откройте в просмотрщике.
Заключение
pdfimages — быстрый и надежный инструмент для извлечения встроенных растровых изображений из PDF на Linux. Он сохраняет исходные данные без перекодирования, что полезно при подготовке графики или архивации. Для сценариев, где требуется рендеринг страницы или работа с векторными элементами, рассмотрите pdftoppm, Ghostscript или библиотеки PyMuPDF.
Важно: перед массовой обработкой тестируйте команды на нескольких файлах, чтобы избежать потери качества или пропуска изображений.
Дополнительные ресурсы:
- man pdfimages
- Документация poppler
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента