воскресенье, 6 октября 2013 г.

Pdftk -- Часть 2: Автонумерация страниц при помощи LaTeX и pdftk

Как пронумеровать в страницы в PDF-документе? Это можно сделать очень просто при помощи Linux, pdftk, LaTeX и скрипта, который приведён ниже.




Сначала нужно сгенерировать файл, который будет содержать пустые страницы формата А4, снизу которых по центру стоит номер. Для этого нам понадобится LaTeX и скрипт на Bash, который приведён ниже:

#!/bin/bash
# параметры скрипта $1 - стартовая страница
#                   $2 - конечная страница 
startpage=$1
endpage=$2
mkdir number.tmp && cd number.tmp
echo "\documentclass[a4paper,14pt]{extarticle}">>blankpages.tex
echo "\usepackage[top=30mm,bottom=30mm,left=30mm,right=30mm]{geometry}" \ 
      >>blankpages.tex
echo "\begin{document}">>blankpages.tex
echo "\setcounter{page}{$1}">>blankpages.tex
for i in `seq $startpage $endpage`; do
echo "\mbox{}">>blankpages.tex
echo "\newpage">>blankpages.tex
done
echo "\end{document}">>blankpages.tex
pdflatex blankpages.tex>/dev/null
mv blankpages.pdf ../blankpages.pdf
cd ..
rm -rf number.tmp




Скрипт нужно сохранить в файл blankpages и сделать его исполняемым. Параметры скрипта --- начальный и конечный номер страницы. Скрипт создаёт в текущем каталоге файл blankpages.pdf, который содержит пустые страницы формата A4 пронумерованные от начального номера до конечного.


Пример вызова скрипта:

  blankpages 3 15

В результате в текущем каталоге создаётся файл blankpages.pdf, содержащий пустые страницы, пронумерованные с 3-ей по 15-ую.


Как это работает. Скрипт созадёт в текущем каталоге подкаталог number.tmp. В этом каталоге созадётся файл blankpages.tex. При создании этого файла применяется хитрость. Дело в том, что LaTeX игнорирует пустые страницы и команда \newpage не действует. Чтобы LaTeX создал пустую страницу нужно на ней разместить пустой символ при помощи команды \mbox{} . Затем выполняется pdflatex и получается файл blankpages.pdf, который затем перемещается в текущий каталог командой mv и временный каталог удаляется командой rm.

Теперь, когда у нас есть файл с пустыми пронумерованными страницами, мы можем наложить его на PDF, страницы в котором нужно пронумеровать при помощи pdftk.

Например так:

  pdftk article.pdf multistamp blankpages.pdf output arcticle_numbered.pdf

Вот и всё. Теперь в файле article_numbered.pdf находится исходный файл с пронумерованными страницами.

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

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