El título 1 lo dice (casi) todo. Para ser más específico, requiero
y preferir
Antecedentes: mañana generaré un PDF simple y estaría feliz si no tomara demasiado tiempo y si el tiempo invertido no se desperdiciara.
1 Tomado de una pregunta igualmente nombrada, pero cerrada hace mucho tiempo sobre SO y espero que este sea un mejor lugar para ello. El problema con la pregunta cerrada es que las respuestas pueden quedar obsoletas durante mucho tiempo. Incluso si no, no hay una recomendación clara allí.
Soy el director ejecutivo de iText Group , el autor original de iText , así como el autor de dos libros de iText en acción y el libro electrónico gratuito Las mejores preguntas de iText en StackOverflow .
La lista a la que hace referencia menciona iText y con esta respuesta, quiero confirmar que iText todavía existe. Está disponible bajo una licencia de código abierto ( AGPL ), así como bajo una licencia comercial (que genera ingresos que se utilizan para un mayor desarrollo).
Además de ser el director ejecutivo de las empresas iText (con oficinas en Europa, EE. UU. y próximamente también en Singapur), también soy miembro de los comités ISO que crean los estándares PDF. En menos de una semana, volaré a San José (CA) para asistir a las reuniones que discutirán ISO-32000-2 (la próxima especificación PDF 2.0), ISO-19005 (PDF/A), ISO-14289 (PDF/ UA),... También soy responsable del comité Adhoc de ISO para firmas digitales (reescribiendo la parte sobre firmas digitales en ISO-32000-2).
En iText, invertimos en un mayor desarrollo, lo que no siempre es el caso de las bibliotecas de código abierto que se ofrecen con una licencia de cerveza gratis . Por ejemplo: tanto iText como PDFBox son miembros de PDF Association , pero en los PDF Days en Colonia en 2014, PDFBox declaró que no tenían recursos para invertir en soporte para PDF 2.0. El proyecto se mantiene o cae con la existencia de colaboradores que donan código. El modelo de negocio utilizado por iText genera dinero que nos permite pagar a los desarrolladores.
Flying Saucer es un proyecto que se basa en iText, pero no está afiliado a iText Group de ninguna manera. No creo que todavía sea compatible, pero no estoy seguro.
No conocía PDFClown hasta que el desarrollador de la herramienta se burló de mí acerca de una función única que estaba disponible en PDFClown, pero no en iText. Respondí implementando esa función yo mismo. Basado en la conversación, asumo que PDFClown es un proyecto de un solo hombre.
No tengo mucha información sobre los otros proyectos. Un proyecto que parece faltar en la lista original (pero presente en los comentarios y en otra respuesta) es Apache FOP . Basado en una encuesta que fue organizada por Black Duck Software en nuestro nombre, Apache FOP parece estar ejecutándose en muchos sistemas (era el #2 después de iText), pero no muchos desarrolladores estaban contentos con él debido a (1) la arquitectura eso depende de XSL-FO y (2) problemas de rendimiento.
Una ruta indirecta y gratuita es crear o modificar documentos en LibreOffice utilizando su biblioteca API de Java . Luego dígale a LibreOffice que cree un PDF a partir de ese documento.
No es simple, pero factible. Mi equipo lo ha hecho en el pasado para un prototipo (no en producción). La API de LibreOffice era confusa, con un diseño extraño, no bien documentada, con solo unos pocos ejemplos deficientes, al menos esa fue nuestra experiencia.
Sin embargo, recomendaría enfáticamente considerar el uso de iText si su costo puede incluirse en su presupuesto. Ver la respuesta de Bruno Lowagie.
La biblioteca Apache PDFBox® es una herramienta Java de código abierto para trabajar con documentos PDF. Este proyecto permite la creación de nuevos documentos PDF, la manipulación de documentos existentes y la capacidad de extraer contenido de los documentos.
Apache PDFBox se publica bajo la Licencia Apache v2.0.
Características:
Nuestro software jPDFWriter es una biblioteca Java que puede crear documentos PDF. jPDFWriter es de uso gratuito con fines comerciales, no hay tarifas de licencia.
jPDFWriter puede crear archivos PDF de dos maneras:
Los archivos PDF se pueden crear directamente usando la API muy simple de jPDFWriter. Simplemente cree un objeto PDFDocument, cree tantos objetos PDFPage como sea necesario, dibuje cadenas, gráficos o cualquier otro elemento compatible con Java Graphics2D
en las páginas y luego guarde el documento.
jPDFWriter también amplía el Java estándar PrinterJob
para que pueda crear archivos PDF de la misma manera que imprimiría en una impresora física. Esto permite la reutilización del código de impresión existente y que una aplicación decida, en tiempo de ejecución, si envía la salida a una impresora oa un archivo PDF.
JODReports es de código abierto e impulsa OpenOffice o LibreOffice como motor de conversión. Esto significa que puede diseñar plantillas en un procesador de texto o en un programa de hoja de cálculo, manipularlas y luego convertirlas a varios formatos, incluido PDF.
El proyecto JODReports se actualizó por última vez en agosto de 2013, por lo que es difícil saber si está "muerto".
iText detallado por la respuesta de Bruno podría ser ideal: es una gran biblioteca.
OpenPDF es una biblioteca PDF de Java, bifurcada de iText.
A partir de 2017, parece mantenerse activamente.
Soy el autor de Open Lowcode PDF, una capa adicional sobre el Apache PDBBox gratuito. El marco es de código abierto y la primera versión se lanzó hoy en github . Siéntase libre de echar un vistazo y proporcionar comentarios.
El marco tiene como objetivo producir documentos y formularios como los que comúnmente producen las empresas con un diseño elegante estándar.
Nemo
maaartinus
org.apache.pdfbox
. Pasé más tiempo con él de lo que quería, pero hizo el trabajo.Nemo
Vadzim
Vadzim