2008-09-04

PDF в Ubuntu: несколько рецептов

На работе время от времени требуется производить манипуляции с файлами PDF. В результате проведенных поисков и тестов получены следующие результаты:
Использование пакета pdftk:
sudo apt-get install pdftk
1. Разбор файла на страницы:
pdftk input.pdf burst output page%03d.pdf
Получится пачка файлов с именами page001.pdf, page002.pdf.... page021.pdf и т.п.
2. Извлечение одной или нескольких страниц в отдельный файл:
pdftk input.pdf cat 1 output page1.pdf
pdftk input.pdf cat 5-9 output page5-9.pdf
3. Сборка одного файла из многих:
pdftk *.pdf cat output combined.pdf
pdftk page1.pdf page2.pdf cat output combined.pdf
На этой странице есть еще примеры. Примечание: при обработке файлов с символами кириллицы в названии выдает ошибку, собирает страницы в один файл быстрее, чем ghostscript.

Использование пакета ghostscript:
sudo apt-get install ghostscript
1. Сборка одного файла из множества:
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH *.pdf

Облегчим себе жизнь скриптами и алиасами!
В папку с пользовательскими скриптами (у меня это ~/bin) поместились файлы:

# Скрипт pdfX. Для работы нужна утилита pdftk
if [ $1 ]; then
if [ $2 ]; then
pdftk $1 cat $2 output page$2.pdf;
else echo "Нужен обязательный параметр: извлекаемые страницы. Указывать или число (например 12) или промежуток чисел (например 2-4)";
fi;
else echo "Нужен обязательный параметр: имя файла pdf";
fi;

Использовать так:
pdfX input.pdf 4-5
pdfX input.pdf 43

# Скрипт pdfXall. Для работы нужна утилита pdftk
if [ $1 ]; then
pdftk $1 burst output page%03d.pdf
else echo "Нужен обязательный параметр: имя файла pdf";
fi;

Использовать так:
pdfXall input.pdf

В файл ~/.bashrc добавлена строчка:
alias pdf2one='gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH'

После перечитывания файла
~$ . .bashrc
в каталоге с кучей файлов pdf можно использовать команду:
pdf2one *.pdf

Комментариев нет: