Сравните эти продукты для генерации PDF с Java заданными требованиями внутри: iText, Apache PDFBox или FOP?

Были вопросы по этому поводу, но не недавно, и технологии должны были идти дальше с тех пор.

Требования:

  • создание pdf-документов на основе предопределенного шаблона (я могу использовать либо pdf-формы, либо xsl-fo)
  • возможность заполнения текстовых данных
  • возможность заполнения графических данных (сгенерированных штрих-кодов)
  • возможность изменения шаблона pdf в рабочей среде без исправления (перекомпиляции)
  • создание файла PDF для сохранения в базе данных (как blob) и/или печати
  • с открытым исходным кодом/бесплатно

Возможные варианты: iText, PDFBox, FOP, что-нибудь еще? Каковы рекомендации, основанные на вышеуказанных требованиях?

Ответ 1

  • IText; в настоящее время iText является коммерческой библиотекой, последняя версия уже не бесплатна.
  • ФОП; Я много работал с FOP. Он довольно ресурсоемкий (Java > XML > XSLT > PDF), а сложные PDF файлы становятся кошмаром (может привести к XSLT с 20k + LoC)
  • PDFBox; это лучшая альтернатива, хотя я не работал с ней в крупных проектах.
  • Не проверял Flying Saucer еще

В заключение я бы попробовал PDFBox. В зависимости от требований вашего штрих-кода вам может понадобиться встроить штрих-код (шрифт) в PDF файл или распространять шрифт для ваших клиентов - позаботьтесь об этих проблемах.

Ответ 2

Я сделал проект с Flying Saucer http://code.google.com/p/flying-saucer/, который основан на iText. Он бесплатный, простой в использовании, имеет большую поддержку CSS и имеет хороший открытый исходный код.

Ответ 3

Я думаю, что ваши критерии могут быть удовлетворены как iText, так и Apahce FOp, но здесь у вас есть дополнительные критерии:

  • лицензирование: FOP основан на лицензии Apache и поэтому "дружественный" также для коммерческого использования.
  • гибкость: API низкого уровня, такой как iText, более гибкий, чем FOP высокого уровня.
  • Visual tools: есть один конструктор для FOP здесь.
  • Программируемая модель: iText основан на API программирования, в то время как для FOP требуется шаблон XSLFO и меньше программирования.
  • Собственные средства против стандарта. Apache FOP основан на стандартном и, следовательно, независимом от поставщика, в то время как iText является proprietaRy API
  • Performace: Говорят, что FOP более интенсивен. это зависит от того, каковы ваши целевые файлы PDF. Мне никогда не приходилось использовать FOP.

Я бы не использовал PDFBox, он хорош для чтения и изменения существующего файла PDF, но создание файла с нуля с помощью PDFBox может быть большой работой.

Ответ 4

Я немного предвзятый (коммиттер), но я предлагаю iText.

создание pdf-документов на основе предопределенного шаблона (я могу использовать либо pdf-формы, либо xsl-fo)

PDF-формы: проверьте

возможность заполнения текстовых данных

PDF-формы, проверьте. Вы также можете выполнять программный макет.

возможность заполнения графических данных (сгенерированных штрих-кодов)

Check. Учитывая известное местоположение (которое может быть "местоположением этой конкретной аннотации" ), iText будет рисовать штрих-код для вас, учитывая символику и значение. Вы можете вывести список поддерживаемых символик из констант перечисленных здесь.

Для такого рода вещей я использую поля Button с видом "Только значок". "Значок" - это некоторые произвольные инструкции для рисования PDF или изображение. iText-штрих-код создаст PdfTemplate, который вы можете вставить в кнопку без особых проблем.

возможность изменять шаблон pdf в рабочей среде без патчей (перекомпиляции)

Если все ваши макеты выпекаются в шаблоне PDF, а ваш "штрих-код идет здесь", информация не жестко закодирована в исходном коде, тогда вы золотые.

создание PDF файла для сохранения в базе данных (как blob) и/или печати

PDF является PDF файлом PDF. Черт, с некоторой дополнительной работой с вашей стороны, вы можете использовать iText для создания файлов PDF/A. "A" - для архива.

с открытым исходным кодом/бесплатно

Open Source: Да. v2.1.7 была последней версией для использования MPL. Начиная с версии 5.x, все релизы iText находятся под AGPL. Да, iText пропустил с 2.1.7 до 5.0, чтобы синхронизировать нумерацию версий между iText и iTextSharp.

Не совсем "маленький f" бесплатно, но версия 2.1.7 не так уж и сложна. OTOH, это сироты, не подкрепленные. Будьте информированным потребителем.

Ответ 5

Это зависит от того, как именно вы хотите создать PDF. FOP работает с XML, IText позволяет создавать программно с Java.

Ответ 6

Еще один большой палец для летающей тарелки. Он работает достаточно хорошо и прост в использовании, если вы знакомы с html и css.

Что действительно не задокументировано, так это то, как получить доступ к встроенным функциям штрих-кода iTexts. Однако это легко осуществить. Я привел здесь короткий учебник: http://andreas.haufler.info/2012/12/generating-barcodes-in-pdfs-with-flying.html