Порою бывает необходимо “порезать” pdf-ку на картинки, так чтобы каждая страница была преобразована в JPEG-картинку. В линуксе для этого есть две полезные утилиты: pdftoppm и ppmtojpeg.
pdftoppm – обрабатывая pdf файл генерирует для каждой его страницы соответствующую картинку. Поддерживаются следующие форматы: ppm, pgm или pbm. По умолчанию используется ppm. При конвертировании можно указать диапазон страниц (флаги -f, -l), которые необходимо перевести в отдельные изображения, и даже задать координаты области на странице для преобразования (флаги -x, -y, -W, -H).
pnmtojpeg – одна из многочисленного семейства утилит pnmto* используемых для конвертации файлов формата ppm, pgm pbm во что только душе угодно.
Вот простенький bash скрипт который конвертирует pdf-файл в набор JPEG-картинок. Первый аргумент – pdf файл для конвертации, второй – папка в которую будут сложены jpeg-страницы. Если указанной директории не существовало – она будет создана. Если директория не указана – файлы будут складироваться в текущую папку.
#!/bin/bash SUBDIR="." usage () { echo "usage: pdf-file-name [folder-for-jpeg-page]" echo "splitting pdf-file to jpeg pages set" echo " " echo $errmsg } if [ $# -lt 1 ] then errmsg="You should provide pdf file name!" usage exit fi if [ ! -f "$1" ] then errmsg=${1}":File Not Found" usage exit fi if [ $# -eq 2 ] then SUBDIR="$2" if [ ! -d "$2" ] then mkdir "$2" if [ ! -d "$2"] then errmsg=${1}":Can't create folder, check pemissions" usage exit fi fi fi echo 'starting for "' $1 '" to "' $SUBDIR '" folder' pdftoppm "$1" "$SUBDIR"/tmp.ppm for file in "$SUBDIR"/*.ppm do echo $file pnmtojpeg $file > ${file/%.ppm/.jpg} rm -f $file done
1 comment
What a joy to find such clear thinking. Thanks for psoitng!