Поиск по сайту:

Преобразование PDF в изображения из командной строки Linux


Преобразование файла PDF в изображение можно легко выполнить в командной строке Linux с помощью одной команды. Узнайте, как установить утилиту, как ее использовать и как автоматизировать настройку.

Что такое poppler-utils?

Как упоминалось во введении к этой статье, нам нужно установить небольшой набор утилит с именем poppler-utils, который поможет нам конвертировать PDF-файлы в изображения.

Набор утилит poppler-utils позволяет нам конвертировать изображения в PDF и PDF в изображения.

Установка poppler-utils

Чтобы установить poppler-utils в свой дистрибутив Linux на базе Debian/Apt (например, Ubuntu и Mint), выполните следующие действия:

sudo apt установить poppler-utils

Чтобы установить poppler-utils в ваш дистрибутив Linux на основе RedHat/Yum (например, RedHat и Fedora), выполните следующие действия:

sudo yum установить poppler-utils

Преобразование PDF в изображения

Требуемая команда проста и понятна:

pdftoppm -png test.pdf test

С помощью команды pdftoppm мы можем конвертировать PDF в изображения. Мы указываем, что нам нужен файл PNG в качестве выходного формата (используя -png) и что наш входной файл — test.pdf.

Выходной файл мы указываем как test. pdftoppm автоматически добавит суффикс номера страницы (например, -1) и расширение (на основе переданного ранее параметра -png).

Таким образом, имя выходного файла будет test-1.png, как мы можем проверить следующим образом:

ls test-1.png
eog test-1.png 

Любые последующие страницы будут иметь формат test-2.png и т. д. Команда eog (если eog установлена) откроет для вас файл, чтобы вы можете просмотреть вывод, хотя вы можете использовать любую другую программу обработки изображений, которая вам нравится.

Пакетная обработка файлов PDF в изображения

Мы можем сделать однострочную команду для пакетной обработки всех файлов PDF с заданным именем для изображений. Затем мы могли бы просто добавить эту строку в небольшой файл сценария .sh и дополнительно автоматизировать его, или мы можем просто использовать ее в командной строке всякий раз, когда нам нужно преобразовать большое количество файлов PDF в изображения.

ls --color=never test*.pdf | sed 's|.pdf||' | xargs -I{} pdftoppm {}.pdf -png {}

В этой команде мы сначала получаем список каталогов для всех файлов PDF, имена которых начинаются с test и заканчиваются на .pdf, используя ls -- color=никогда не тестировать*.pdf.

--color=never важен, так как символы цветового кодирования оболочки (если они активны, как по умолчанию) могут иногда сбивать с толку xargs.

Затем мы используем простую команду замены sed, чтобы заменить литеральную точку, за которой следует pdf, на ничто. Другими словами, мы удаляем расширение файла .pdf.

Это дает нам преимущество добавлять его позже только там, где это необходимо, то есть при указании входного файла для pdftoppm, но не при указании выходного файла для той же команды pdftoppm, очень похоже на наш предыдущий пример выше.

Наконец, мы используем xargs для отправки каждого имени файла PDF (за исключением .pdf) в pdftoppm одно за другим. Мы используем параметр -I для xargs, который позволяет нам указать любой полученный ввод (т. е. сокращенные имена файлов PDF), просто используя {} в следующую команду.

Как видите, наша команда pdftoppm теперь очень похожа на первый пример, с каждым отдельным именем pdf-файла в качестве входных данных (повторно с суффиксом .pdf) и вывести имя файла PDF без .pdf.

Давайте выполним это:

Это сработало нормально: три PDF-файла, все с одной страницей, были преобразованы в три отдельных файла .png (по одному изображению на страницу и в данном случае на каждый PDF-файл, поскольку в каждом PDF-файле была только одна страница). все метко названы и правильно суффиксированы.

В качестве альтернативы параметру -png можно также использовать -jpeg для создания файлов JPEG. Используйте pdftoppm --help или man pdftoppm, чтобы просмотреть полный список параметров.

Подведение итогов

В этой статье мы увидели, насколько просто и просто можно преобразовать PDF-файлы в файлы изображений прямо из командной строки Linux! Мы также рассмотрим простой способ автоматизации этого процесса. Наслаждайтесь!