2008-12-15

Python и PDF

О том, с помощью чего и как можно работать с документами PDF в консоли я уже упоминал раньше. Несомненно, с помощью pdftk можно кое-чего достичь, и очень часто этого будет вполне достаточно.
Теперь передо мной встала другая задача: динамически вносить измененния в мета-информацию PDF файлов, и очень желательно - автоматически обрезать белые поля, остающиеся после сканирования документов. И оказалось, это не так просто.
С помошью того же pdftk можно получить информацию документа, записать ее в файл, изменить, а потом сделать update этой информации в другой файл. Что-ж, неплохо. Только кириллица там не прижилась, и слишком много телодвижений, да еще вручную. Это не наш метод. Хотя, если придется, то никуда не денешься.
К делу был привлечен Python, к которому я подбираю библиотеки для работы в PDF.
Кандидат номер 1:
pyPdf, ставится из стандартного репозитария Ubuntu (python-pypdf). Его описание, документация и несколько вполне ясных примеров с комментариями есть на сайте производителя. Вот что этот модуль умеет: извлекать информацию из документа, разбивать документ на страницы по отдельным файлам, собирать их в одно, обрезать, собирать многостраничные документы в одну страницу, шифровать и дешифровывать PDF. Минимум необходимого. Но я так и не нашел возможности вносить изменения в мета-информацию, а это то мне и нужно было.
Кандидат номер 2:
ReportLab, тоже есть в репозитарии Ubuntu. Документация обширная, я только начал вникать, но уже понятно, что эта библиотека - для создания документов, а что насчет правки уже мозоль натершей на языке мета-информации? Пока не знаю, возможно я найду возможности все-таки...
У кого есть опыт в этой сфере - не жадничайте, поделитесь! Неужели я один такой?
По поводу обрезки белых полей - глухо, как в танке. Пробовал использовать convert из комплекта ImageMagic и его опции -trim, а также -fuzzy, вроде бы специально предназначенных для такой задачи. Но результат нулевой. Цвета конечно не идеальные, но про -fuzz написано на сайте разработчика, что он как-раз для такого случая! Ан нет, не сработало. Откликнитесь, коллеги, у кого получилось?

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