Название 1 говорит (почти) все. Чтобы быть более конкретным, я требую
и предпочитаю
Предыстория: Завтра я сгенерирую простой PDF, и я был бы счастлив, если бы это не заняло слишком много времени и если бы потраченное время не было потрачено впустую.
1 Взято из одноименного, но давно закрытого вопроса о SO , и я надеюсь, что это лучшее место для него. Проблема с закрытым вопросом заключается в том, что ответы могут быть давно устаревшими. Даже если нет, то нет четкой рекомендации.
Я являюсь генеральным директором iText Group , первоначальным автором iText , а также автором двух книг iText in Action и бесплатной электронной книги The Best iText Questions на StackOverflow .
В списке, на который вы ссылаетесь, упоминается iText, и этим ответом я хочу подтвердить, что iText все еще существует. Он доступен под лицензией с открытым исходным кодом ( AGPL ), а также под коммерческой лицензией (которая приносит доход, который используется для дальнейшего развития).
Помимо того, что я являюсь генеральным директором компаний iText (с офисами в Европе, США, а вскоре и в Сингапуре), я также являюсь членом комитетов ISO, которые создают стандарты PDF. Менее чем через неделю я лечу в Сан-Хосе (Калифорния) для участия в собраниях, на которых будут обсуждаться ISO-32000-2 (ожидаемая спецификация PDF 2.0), ISO-19005 (PDF/A), ISO-14289 (PDF/ UA),... Я также отвечаю за специальный комитет ISO по цифровым подписям (переписывая часть о цифровых подписях в ISO-32000-2).
В iText мы инвестируем в дальнейшее развитие, что не всегда относится к библиотекам с открытым исходным кодом, которые предлагаются с бесплатной лицензией. Например: и iText, и PDFBox являются членами Ассоциации PDF , но на Днях PDF в Кельне в 2014 году PDFBox заявил, что у них нет ресурсов для инвестиций в поддержку PDF 2.0. Проект стоит или падает с существованием участников, которые жертвуют код. Бизнес-модель, используемая iText, приносит деньги, которые позволяют нам платить разработчикам.
Flying Saucer — это проект, созданный на базе iText, но никак не связанный с iText Group. Я не думаю, что это все еще поддерживается, но я не уверен.
Я не знал о PDFClown, пока разработчик инструмента не дразнил меня одной функцией, которая была доступна в PDFClown, но не в iText. Я ответил, реализовав эту функцию самостоятельно. Основываясь на разговоре, я предполагаю, что PDFClown — это проект одного человека.
У меня мало информации о других проектах. Один проект, который, похоже, отсутствует в исходном списке (но присутствует в комментариях и в другом ответе), — это Apache FOP . Основываясь на опросе, организованном Black Duck Software от нашего имени, Apache FOP, по-видимому, работает на многих системах (это был номер 2 после iText), но не так много разработчиков были им довольны из-за (1) архитектуры. это зависит от XSL-FO и (2) проблем с производительностью.
Один непрямой и бесплатный способ — создавать или изменять документы в LibreOffice с помощью библиотеки Java API . Затем скажите LibreOffice создать PDF-файл из этого документа.
Не просто, но выполнимо. Моя команда делала это в прошлом для прототипа (не в производстве). LibreOffice API был запутанным, со странным дизайном, плохо документированным, с несколькими плохими примерами — по крайней мере, таков был наш опыт.
Тем не менее, я настоятельно рекомендую рассмотреть возможность использования iText , если его стоимость может быть включена в ваш бюджет. См . Ответ Бруно Лоуаги.
Библиотека Apache PDFBox® — это инструмент Java с открытым исходным кодом для работы с документами PDF. Этот проект позволяет создавать новые документы PDF, манипулировать существующими документами и извлекать содержимое из документов.
Apache PDFBox публикуется под лицензией Apache License v2.0.
Функции:
Наше программное обеспечение jPDFWriter — это библиотека Java, которая может создавать PDF-документы. jPDFWriter можно использовать бесплатно в коммерческих целях, без лицензионных отчислений.
jPDFWriter может создавать файлы PDF двумя способами:
Файлы PDF можно создавать напрямую с помощью очень простого API jPDFWriter. Просто создайте объект PDFDocument, создайте столько объектов PDFPage, сколько необходимо, нарисуйте строки, графику или любые другие элементы, поддерживаемые Java Graphics2D
, на страницах, а затем сохраните документ.
jPDFWriter также расширяет стандартную Java PrinterJob
, так что вы можете создавать PDF-файлы так же, как вы печатаете на физическом принтере. Это позволяет повторно использовать существующий код печати, а приложению во время выполнения решать, следует ли отправлять вывод на принтер или в файл PDF.
JODReports имеет открытый исходный код и использует OpenOffice или LibreOffice в качестве механизма преобразования. Это означает, что вы можете создавать шаблоны в текстовом процессоре или программе для работы с электронными таблицами, манипулировать ими, а затем преобразовывать в различные форматы, включая PDF.
Последний раз проект JODReports обновлялся в августе 2013 года, поэтому трудно понять, «мертвый» ли он.
iText , подробно описанный ответом Бруно, может быть идеальным - это отличная библиотека.
OpenPDF — это библиотека Java PDF, созданная на основе iText.
По состоянию на 2017 год он, кажется, активно поддерживается.
Я автор Open Lowcode PDF, дополнительного слоя поверх бесплатного Apache PDBBox. Фреймворк с открытым исходным кодом, и первая версия была выпущена только сегодня на github . Не стесняйтесь смотреть и оставлять отзывы.
Фреймворк предназначен для создания документов и форм, которые обычно производятся компаниями со стандартным элегантным макетом.
Немо
маартинус
org.apache.pdfbox
. Я провел с ним больше времени, чем хотел, но он сделал свою работу.Немо
Вадим
Вадим