Несколько недель назад понадобилось мне кое-что поменять в чертежах, которые были в виде pdf-альбома представлены. Файл pdf не был закрыт от редактирования к слову. Казалось бы – задача примитивная, но не тут-то было. Перепробовал около десятка различных бесплатных и условно-бесплатных pdf-редакторов – всё без толку. Некоторые “редакторами” только называются – на деле не могут вообще ничего. Другие вроде позволяют изменения внести, но лепят всюду свои надписи типа “отредактировано в таком-то pdf редакторе”, что мне тоже совсем ни к чему. А чем можно банально разбить альбом на страницы – я вообще не понял.
Помощь, как часто бывает, пришла из мира open source – была найдена бесплатная консольная утилита для редактирования PDF – pdftk (кроссплатформенная, под Linux и Windows точно есть), позволющая редактировать pdf в широких пределах. Для любителей графики – и под Linux, и под Window у pdftk есть графические интерфейсы (GUI). Меня же как раз больше привлекла консольность – можно в пакетном режиме обрабатывать сразу несколько файлов. Ей я вырезаю или вклеиваю нужные листы в альбомы чертежей, а сами изменения делаю в обычно графическом редакторе (чаще в сего – в Gimp).
Что умеет редактор pdftk
- Разбивать pdf-файл на страницы или склеивать его из отдельных файлов в альбом (можно вырезать или вклеить нужные страницы в существующий файл);
- Запароливать pdf-файлы или наоборот снимать защиту, поддерживается шифрование и задание паролей на редактирование или только на чтение – обработка защищенных pdf;
- Заполнять формы в pdf-файлах в автоматическом режиме;
- Добавлять к страницам pdf-файла водяной знак, поворачивать страницы документа c шагом 90 градусов;
- Обрабатывать метаданные pdf-файла – читать, изменять и перезаписывать.
- Восстанавливать повреждённые pdf-документы
Список возможностей довольно исчерпывающий, лично мне зачастую хватает опций по вырезанию из pdf нужных страниц, которые я затем редактирую в Gimp, как писал выше, и вклеиваю обратно в исходный pdf-файл. Так что различные платные редакторы pdf для меня стали бесполезны, а с учетом наличия графического интерфейса для pdftk – разобраться с ней ничуть не сложнее, даже если ничего не понимать в консольных командах.
Основные консольные ключи pdftk
- cat (
<исходный PDF> [<номер начальной страницы диапазона>[-<номер конечной страницы диапазона>[<определитель>]]][<поворот страницы>]
) – вырезает из pdf-документа указанные страницы (или их диапазон) и сохраняет их в выходном документе. Определитель even укажет вырезать только чётные страницы, лежащие внутри заданного диапазона, а определитель odd – только нечётные (например задав диапазон 1-8even – вырежем страницы 2, 4, 6 и 8). Поворот страниц задаётся опциями – N: 0 градусов, E: 90 град., S: 180 град., W: 270 град. – абсолютные значения ориентации страницы. Поворот от текущего положения – L: -90, R: +90, D: +180. Тогда чтобы повернуть все страницы документа на 90 градусов по часовой стрелке, достаточно указать диапазон как 1-endR. Объединяются файлы или страницы тоже при помощи cat:pdftk in1.pdf in2.pdf cat output out1.pdf
. В результате получим: in1.pdf + in2.pdf = out1.pdf - stamp, multistamp – служат для добавления водяных знаков к страницам документа.
- dump_data, dump_data_utf8 – разбирают входной pdf-файл на составляющие (метаданные, статистика, закладки, названия страниц), которые будут сохранены в обычном текстовом виде.
- encrypt_128bit – позволяет закрыть файл от редактирования при помощи пароля владельца (задаётся через опцию owner_pw), а при помощи опции allow
можно задать права работы с файлом для непревилигированных пользователей.
Таков краткий список консольных ключей pdftk, которыми я пользовался на практике. Конечно это далеко не все возможные параметры вызова программы, так что желающие знать больше – man pdftk
(под Windows есть html-файл со справкой или краткая справка через вызов pdftk /?
) – там помимо прочего есть очень наглядные примеры различных вариантов использования утилиты, благодаря чему графический интерфейс для неё не особо и нужен.
Примеры использования pdftk
Несколько примеров по консольному использованию pdftk для решения тех задач, с которыми я сталкивался. Задача первая – нужно было объединить множество одностраничных pdf-файлов в один общий альбом, чтобы удобно его просматривать и печатать, для этого используется следующая команда:
pdftk *.pdf cat output new_album.pdf
Вторая задача – в полученном альбоме мне нужно было повернуть первую страницу на 90 градусов против часовой стрелки, а все остальные – тоже на 90 градусов, но уже по часовой. Это можно сделать следующим образом:
pdftk new_album.pdf cat 1L 2-endR output new_rotated_album.pdf
Графический интерфейс для редактора pdftk
Универсальный кросс-платформенный (Linux и Windows) графический интерфейс для pdftk называется незамысловато – Gui for PDFTK и поддерживает все опции, доступные при вызове редактора из командной строки. В принципе особой необходимости в нём нет, но если хочется именно графической оболочки – можно воспользоваться им (из альтернатив существуют чисто Линуксовый PDF Chain или PDFTK Builder, работающий исключительно под Windows; набор возможностей у них одинаковый).
Из недостатков Gui for PDFTK могу отметить то, что Linux-версия основана на древней библиотеке libgtk-1.2, из-за чего выглядит она корявенько и требует наличия этой самой библиотеки (которую не во всех современных дистрибутивах можно найти). Windows-версия этого недостатка лишена и выглядит как любое другое Windows-приложение.