Порою бывает необходимо “порезать” 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!