Файлы PDF не очень просто разбить на файлы изображений в большинстве программ, которые используются для открытия этих файлов. Тем не менее для этого существует несколько утилит командной строки. Эта статья расскажет, как в командной строке Linux преобразовать PDF в JPEG.
ImageMagick (convert)
Для конвертации PDF на отдельные файлы изображений начнём с утилиты ImageMagick.
В Debian, Linux Mint, Ubuntu, Kali Linux их производных вы можете установить этот пакет с помощью этой команды:
sudo apt install imagemagick
В Arch Linux, Manjaro и их производных для установки выполните команду:
sudo pacman -S imagemagick
Используйте convert следующим образом:
convert input.pdf output.jpg
Для хорошего качества используйте эти параметры
convert -density 300 -quality 100 in.pdf out.jpg
Если вы столкнулись с ошибками, то вам могут помочь статьи:
- Ошибка «convert: attempt to perform an operation not allowed by the security policy `PDF’» (РЕШЕНО)
- Ошибка «convert: attempt to perform an operation not allowed by the security policy `gs’» (РЕШЕНО)
pdftoppm (из пакета poppler)
В Debian, Linux Mint, Ubuntu, Kali Linux их производных вы можете установить этот пакет с помощью этой команды:
sudo apt install poppler-utils
В Arch Linux, Manjaro и их производных для установки выполните команду:
sudo pacman -S poppler
Формат команды следующий:
pdftoppm -jpeg -r 300 input.pdf output
В этой команде:
- -jpeg устанавливает формат выходного изображения в JPG,
- -r 300 устанавливает разрешение выходного изображения на 300 точек на дюйм,
- output будет префиксом для всех страниц изображений, которые будут пронумерованы и помещены в ваш текущий каталог, с которым вы работаете.
Однако, на мой взгляд, лучший способ - сначала использовать mkdir -p images для создания каталога "images", а затем установить для вывода значение images/pg, чтобы все выходные изображения с префиксом файла pg перед каждым из их номеров были аккуратно помещены в только что созданный каталог images.
Поэтому вот мои любимые команды:
Создаём файлы размером ~1 МБ на страницу. Вывод в формате .jpg с разрешением 300 точек на дюйм:
mkdir -p images pdftoppm -jpeg -r 300 mypdf.pdf images/pg
Создаём файлы размером ~2 МБ на страницу. Вывод в формате .jpg с максимальным качеством (наименьшее сжатие) и все ещё с разрешением 300 точек на дюйм:
mkdir -p images pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
Если вам нужно большее разрешение, вы можете попробовать 600 DPI:
mkdir -p images pdftoppm -jpeg -r 600 mypdf.pdf images/pg
… или 1200 точек на дюйм:
mkdir -p images pdftoppm -jpeg -r 1200 mypdf.pdf images/pg
Для создания одного файла выполните:
pdftoppm -singlefile -jpeg -r 300 input.pdf output
vips (из пакета libvips)
В Debian, Linux Mint, Ubuntu, Kali Linux их производных вы можете установить этот пакет с помощью этой команды:
sudo apt install libvips-tools
В Arch Linux, Manjaro и их производных для установки выполните команду:
sudo pacman -S libvips
libvips может быстро конвертировать PDF → JPEG. Эта программа присутствует в стандартных репозиториях большинства дистрибутивов Linux, для macos можно использовать homebrew, а бинарный файл Windows можно загрузить с сайта libvips.
Это команда преобразует PDF в JPG с разрешением по умолчанию (72):
vips copy somefile.pdf somefile.jpg
Вы можете использовать параметр dpi, чтобы установить другое разрешение рендеринга, например:
vips copy somefile.pdf[dpi=600] somefile.jpg
Вы можете выбрать определённые страницы:
vips copy somefile.pdf[dpi=600,page=12] somefile.jpg
Или сделать рендеринг пяти страниц, начиная с третьей, следующим образом:
vips copy somefile.pdf[dpi=600,page=3,n=5] somefile.jpg
В документации для pdfload есть все опции.
Сравнение скоростей работы программы:
time -f %M:%e convert -density 300 r8.pdf[3] x.jpg 276220:2.17 time -f %M:%e pdftoppm -jpeg -r 300 -f 3 -l 3 r8.pdf x.jpg 91160:1.24 time -f %M:%e vips copy r8.pdf[page=3,dpi=300] x.jpg 149572:0.53
Таким образом, libvips примерно в 4 раза быстрее и требует вдвое меньше памяти, по крайней мере, в этом тесте.
Связанные статьи:
- Какой программой открыть файлы .docbook (DocBook) (80.8%)
- Основы использования Joe's Own Editor (69.3%)
- Почему при объединении строк они перекрывают друг друга (69.3%)
- Распознавание текста в Linux (OCR) (50%)
- Автосумма в Calc (LibreOffice) (50%)
- Как из текстового файла найти и удалить символы, отличные от UTF-8 (RANDOM - 50%)