Сравните эти продукты для генерации 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
Ответ 7
никто не говорит о BFO (Большой безликий), хотя он коммерческий