Журнал Системный Администратор, Март 2006

Журнал Системный Администратор

Март 2006

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


Работаем с PDF из Perl

Валентин Синицын

Бытует мнение, что PDF – это закрытый формат, для работы с которым необходимо дорогостоящее ПО. Это не вполне верно: спецификация PDF доступна всем желающим, а для создания и правки файлов можно применять не только настольные издательские системы, но и сценарии Perl.

Модуль PDF::API2 (http://pdfapi2.sf.net) разрабатывается Альфредом Райбенщухом (Alfred Reibenschuh) и распространяется по лицензии GNU GPL. PDF::API2 написан на чистом Perl и имеет минимум зависимостей: Perl 5.8.4 или выше, Encode и Compress::Zlib (если что-то и придется установить, то только последний из них). Модуль использует стандартную объектную нотацию Perl 5 и доступен как через CPAN, так и через репозитарии ActiveState PPM, поэтому может быть установлен любым удобным для вас способом. Последней на момент написания статьи версией была 0.51.

Поставляемая вместе с PDF::API2 документация насчитывает более 160 страниц, большая часть из которых не имеет практической ценности. Для повседневной работы вам потребуются лишь страницы PDF::API2, ::Content, ::Page и ::Util, где перечислены значения различных констант.

PDF::API2 не является средством для редактирования PDF в прямом смысле этого слова – он не предоставляет специальных методов для «поиска и замены» существующих элементов (например, картинок). Однако с его помощью вы легко можете создавать собственные PDF-файлы, а также обрабатывать и дополнять уже существующие. Как мы вскоре увидим, этого достаточно для решения весьма широкого круга задач. Другое ограничение – невозможность работать с зашифрованными PDF-файлами. Видимых препятствий этому нет – программа дешифровки PDF на Perl (http://www.cs.cmu.edu/~dst/Adobe/Gallery/pdfdecrypt.pl) занимает менее двухсот строк кода. «Альтернативный» модуль CAM::PDF (http://search.cpan.org/~clotho/CAM-PDF-1.05), который, по моему мнению, проигрывает PDF::API2 в удобстве использования, также справляется с этой задачей безо всякого труда. Возможно, этот функционал будет реализован в следующих версиях модуля.

Прежде чем мы приступим к обсуждению констант и функций, давайте поближе познакомимся с форматом PDF версии 1.4, с которой и работает PDF::API2.

Оставшая часть статьи доступна только подписчикам. Если вы желаете продолжить чтение этой статьи, то вам необходимо подписаться на эту статью или весь номер.

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке