Стабильная бесплатная (с открытым исходным кодом) библиотека Java PDF только для абзацев текста

В проекте, над которым я работаю, у меня есть требование создать PDF. Этот PDF-файл будет содержать только текст, и содержание текста будет весьма изменчивым. Большая часть текста должна быть напечатана отдельными абзацами, напечатанными друг под другом. Если абзац не помещается на странице, его следует просто добавить на следующую. Он должен быть бесплатным (как в пиве, желательно как в опенсорсе тоже) и стабильным (чтобы не какой-то игрушечный проект).

Кстати, сам проект будет использоваться в коммерческих целях. Пользователи смогут отправить вызов API, и для них будет сгенерирован определенный PDF-файл (его содержимое — это то, на чем мы специализируемся).

Ответы (2)

Согласно Что такое лучшая библиотека PDF с открытым исходным кодом для Java? [закрыто] в StackOverflow лучшим вариантом может быть iText :

iText — это библиотека PDF, которая позволяет вам СОЗДАВАТЬ, АДАПТИРОВАТЬ, ПРОВЕРЯТЬ и ОБСЛУЖИВАТЬ документы в формате Portable Document Format (PDF): — Генерировать документы и отчеты на основе данных из XML-файла или базы данных — Создавать карты и книги, используя множество интерактивных функции, доступные в формате PDF - добавление закладок, номеров страниц, водяных знаков и других функций в существующие документы PDF - разделение или объединение страниц из существующих файлов PDF - заполнение интерактивных форм - предоставление динамически созданных или измененных документов PDF в веб-браузере

iText используется разработчиками Java, .NET, Android и GAE для улучшения своих приложений с помощью функций PDF.

Несколько инженеров iText активно поддерживают проект на StackOverflow: https://stackoverflow.com/questions/tagged/itext .

Эта библиотека, кажется, бесплатна для личного использования.

Однако похоже, что iText не является бесплатным для коммерческого использования. Его использование будет в коммерческом API (в основном, для пользователя будет создан определенный вид документов).
@Kristof Я вижу, вы отредактировали ту часть, которая нужна для коммерческого использования :-). Вы можете проверить справочную ссылку и посмотреть, является ли Apache FOP лучшей альтернативой для вас .
Да, я отредактировал это для ясности :)
Я проверил Apache FOP, повозившись с ним, он определенно кажется отличным решением. Тоже чертовски быстро, спасибо!
@Kristof Не могли бы вы написать ответ на Apache FOP, что он делает и как он соответствует вашим потребностям?

Apache FOP в сочетании с Freemarker — отличное решение для настройки простой системы шаблонов для создания PDF-файлов, содержащих не более чем текст и несколько основных изображений.

Freemarker используется для создания динамических шаблонов, результатом которых является XML в стиле:

<letter>
    <paragraph>Some static content always in here</paragraph>
    <paragraph>Bla bla bla</paragraph>
    <paragraph>Foo foo foo</paragraph>
</letter>

Где bla bla bla и foo foo foo на самом деле происходят из списка в POJO. FOP также можно использовать для создания этого XML (или иметь полностью динамический шаблон), но это кажется более хрупким.

Затем Apache FOP используется для создания XML из PDF. Вы в основном говорите FOP, что для «абзаца» он должен создать текстовый блок в PDF с определенными спецификациями.

Таким образом, вы можете использовать его так же, как вы используете CSS на обычной веб-странице, и полностью разделить создание и структуру контента (Freemarker) и окончательную презентацию (Apache FOP).

Это звучит как отличное решение, не могли бы вы добавить ссылки на Freemarker и Apache FOP?
Для меня это довольно аккуратное решение. Если мне нужны дополнительные виды документов, я просто добавляю шаблоны Freemarker. Если мне нужны дополнительные визуализации шаблона (например, определенный тип абзаца), я просто добавляю материал в шаблон FOP. Кроме того, редактируя мой шаблон FOP, я влияю на каждый вид сгенерированного документа.