Как порезать PDF на картинки

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

  1. What a joy to find such clear thinking. Thanks for psoitng!

Leave a Reply

Your email address will not be published.