ZaLinux.ru

Как преобразовать PDF в JPG с помощью командной строки в Linux?

Файлы 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

Если вы столкнулись с ошибками, то вам могут помочь статьи:

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 раза быстрее и требует вдвое меньше памяти, по крайней мере, в этом тесте.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *