Неделю назад состоялся релиз свободной библиотеки для генерации pdf-файлов версии OpenPDF 1.1.0, самый значительной апгрейд этой библиотеки за последнее время.
OpenPDF — это Java-библиотека для создания и редактирования файлов PDF, которая распространяется под двойной лицензией LGPL/MPL. Библиотека основана на форке iText. В реальности у неё такая история:
forked from rtfarte/OpenPDF forked from kulatamicuda/iText-4.2.0 forked from daviddurand/iText-4.2.0 forked from ymasory/iText-4.2.0LibrePDF/OpenPDF
Все форки ведут историю от одной версии iText 4.2.0, которая вышла восемь лет назад и стала последней версией под свободной лицензией. Сами разработчики iText перешли на AGPL и сконцентрировались над созданием пятой версии, чтобы более успешно продавать коммерческий софт. К настоящему времени они доросли до версии iText 7. Но свободный проект тоже не погиб, а продолжил развитие силами всего сообщества.
За прошедшее время библиотека в некоторых отношениях улучшена, исправлено несколько багов. Хотя изменения не слишком значительные, но разработка продолжается, и внести свой вклад может каждый. Если при генерации PDF-файлов вам требуется какая-то конкретная функциональность, то предложите патч и реализуйте эту функцию для всех.
С момента старой «оригинальной» версии 4.2.0 сделаны следующие изменения.
- компиляция с поддержкой Java 8
- в случае неожиданного окончания файла PDF выбрасывается исключение IOException, а не PDFNull
- принят патч для исправления NPE в XFA Form (метод escapeSom)
- принята функциональность UnembedFontPdfSmartCopy от Vicente Alencar
- принята функциональность RTF Footer от ubermichael
- исправление совместимости для поддержки более свежих криптографических библиотек Bouncy Castle (1.54)
- некоторые исправления NPE и «подкрученная» поддержка фреймворка Maven
OpenPDF — удобный способ внедрить в свой проект генерацию документов PDF, в том числе с криптографической цифровой подписью. Это готовый и бесплатный модуль, пригодный для использования в электронном документообороте. И такую систему можно использовать, например, с сертификатами для подписи PDF, чтобы сертифицировать и утверждать PDF-документы. Или интегрировать с сервисом облачных подписей Digital Signing Service от GlobalSign. Хотя последний уже работает, например, с решением для подписи документов Adobe Sign в облаке Adobe Document Cloud.
Поддержка криптобиблиотек Bouncy Castle весьма полезна. В основе архитектуры Bouncy Castle лежит набор низкоуровневых API, которые реализуют все криптографические алгоритмы. Есть поддержка стандартных высокоуровневых криптографических API платформ Java и C#.
Программные интерфейсы Java API от Bouncy Castle в версии 1.53 включали в себя около 400 тыс. строк кода и поддерживали большое количество алгоритмов, в том числе базовую генерацию сертификатов X.509, работу провайдера JCE/JCA, PKCS#10, PKCS#12, S/MIME, OpenPGP, DTLS, TLS, OCSP, TSP, CMP, CRMF, DVCS, DANE, EST, сертификаты Attribute Certificate (AC), которые используются для связывания дополнительной информации с сертификатом открытого ключа.
Нужно заметить, что кроме OpenPDF существуют и другие свободные библиотеки для генерации PDF. Например, есть ещё veraPDF или замечательная библиотека Apache PDFBox. Последняя активно поддерживается и обладает богатым набором функций:
- Извлечение текста Unicode из файлов PDF.
- Слияние нескольких файлов или разбиение одного PDF на части.
- Извлечение данных из форм PDF или заполнение их.
- Валидация PDF на соответствие стандарту PDF/A-1b.
- Печать PDF через стандартные Java API.
- Сохранение в виде изображений, таких как PNG или JPEG.
- Создание PDF с нуля, с внедряемыми шрифтами и иллюстрациями.
- Цифровая подпись PDF.
Так что в наше время вовсе необязательно использовать проприетарные инструменты для создания или редактирования PDF. Для этого есть много свободных альтернатив.
Автор: GlobalSign_admin