воскресенье, 29 января 2012 г.

Java библиотеки для работы с PDF

Java библиотеки для работы с PDF

Сейчас уже, слава Богу, не надо объяснять людям преимущества формата PDF. А так как формат этот очень распространённый, то и Java-программистам надо с ним как-то работать. И естественно, не городить свои костыли, а пользоваться существующими наработками. Это и есть небольшой перечень того, что доступно "нахаляву".

FOP

FOP - это инструмент для XSL-форматирования, написанный на Java. Он используется в связке с XSLT для преобразования документов XML в формат PDF.
Сайт проекта.

PDF Box

PDFBox - библиотека для работы с PDF из Java. Эта библиотека даёт доступ ко всем компонентам PDF документа и позволяет создавать новые документы и работать с существующими документами, в частности доставать из них текст. В комплект поставки входят несколько утилит командной строки для работы с PDF.
Сайт проекта.

gnujpdf

gnujpdf - это Java пакет (gnu.jpdf.*), лицензированный под LGPL. У него есть простой интерфейс для создания PDF файлов и их печати при помощи классов, наследующих от java.awt.Graphics и java.awt.PrintJob. Классы PDF пишут в выходной поток в формате PDF вместо обычного формата объекта Graphics, но вызовы методов такие же, как если запись велась на canvas обычного приложения или аплета.
Сайт проекта.

jPod

jPod - это уже многофункциональная библиотека для манипулирования PDF и отображения таких документов. Поддерживается работа на разных уровнях абстракции, дописывание информации в уже существующие файлы, работа с разными шрифтами, в том числе и TrueType, чтение из немного неправильных файлов.
Сайт проекта.

PDFjet

PDFjet - это коммерческая библиотека для работы с PDF на платформах Java и .NET. Но при этом у неё есть и версия с открытым кодом, у которой есть такие возможности:
  • Функции рисования: точки, лини, многоугольники, овалы, кривые Безье, звезды, сложные линии и фигуры.
  • Текст: поддержка Юникода, установка определённых межзнаковых интервалов, внутренние гиперссылки.
  • Добавление к документам изображений следующих форматов: PNG, JPEG и GIF.
Сайт проекта.

iText

iText - библиотека для создания PDF файлов на лету. Кроме неперечисленных у этой библиотеки есть такие возможности:
  • Использование PDF в web - передача их браузеру;
  • создание файлов динамически из XML и баз данных;
  • использование интерактивных возможностей PDF (те же гиперссылки);
  • добавление сносок, номеров страниц, "водяных знаков";
  • разрезание, соединение и другое манипулирование страницами PDF документов;
  • добавление цифоровой подписи к файлу PDF.
Сайт проекта.

PJX

PJX - библиотека общего назначения для работы с PDF документами на Java. С поддежкой чтения, разнообразного комбинирования, преобразования и создания PDF документов.
Сайт проекта.

JPedal

JPedal - библиотека для работы с PDF из Java, разрабатываемая с 1999 года. За это время были реализованы следующие возможности:
  • Поддержка различных шрифтов;
  • поддержка различных простанств цветов: DeviceRGB, CalRGB, DeviceGRAY, CalGRAY, ICC, DeviceCMYK и DeviceN;
  • чтение из файлов tiff, jpg и gif;
  • экспорт текста из целого документа, отдельной страницы, из отдельной области страницы по координатам этой области или из таблиц; также можно достать информацию о шрифте и метаданные;
  • можно достать любое изображение из PDF с автоматическим преобразованием;
  • просмотр, редактирование и экспортирование данных из интерактивных PDF форм;
  • механизм поиска по документу с опциональным ограничением страниц для поиска.

UPD:К сожалению, далеко не все возможности доступны в версии с открытым исходным кодом. Кроме нее полезно будет использовать тесно связанную библиотеку для рендеринга изображений JBIG - тоже с открытым кодом.
Сайт проекта.

PDF Clown

PDF Clown для Java (PDF Jester) - это библиотека для чтения, манипулирования и создания PDF файлами с поддержкой различных уровней абстракции.
Сайт проекта.

PDF Renderer

Это уже узкоспециализированный инструмент для отображения документов PDF средствами Java2D. Как правило это подразумевает отображение на компоненте JPanel из Swing, но возможно отображение и на других реализациях Graphics2D.
Сайт проекта.

ICEpdf

Исходный код этой библиотеки был открыт относительно недавно (на момент написания статьи), но благодаря тёмному проприетарному прошлому набор возможностей уже весьма богат:
  • Простая интеграция с любыми Java клиентами, полный контроль над конфигурацией, доступной функциональностью и пользовательским интерфейсом;
  • малое статическое и динамическое потребление памяти;
  • использование на любой реализации Java платформы - нет необходимости в интеграции с каким-то платформо- или архитектурно-зависимым кодом;
  • встраиваемость в качестве просмотроващика PDF;
  • преобразование PDF в изображения на лету (PNG, JPEG, GIF) - например, на веб-сервере;
  • полнофункциональный, эффективный и робастный парсер;
  • поддержка всех видов шрифтов;
  • оптимизация для различных платформ заменой используемых шрифтов;
  • поддержка постепенной загрузки документов - возможность отображение первой страницы, когда весь документ еще не загрузился;
  • поддержка Adobe Standard Security (стандарт безопасности Adobe) для защищённых паролем документов (40 или 128-битное шифрование при помощи RC4 или AES);
  • и еще множество других функций...
Сайт проекта.


На этом пока всё. Если кто-то пользуется чем-то бесплатным - то милости прошу в комментарии, пополним список. Ну а для чего это надо - например, если использовать что-нибудь из перечисленного в связке с библиотекой для работы с файлами Word, то можно написать своё приложение из разряда самых востребованных у студентов - для конвертации "из pdf в word" и обратно.

Основано на подборке отсюда.

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

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