Biblioteca PDF gratuita o casi gratuita para Java

El título 1 lo dice (casi) todo. Para ser más específico, requiero

  • generación de PDF
  • con formato básico (tablas e imágenes)
  • usabilidad en proyecto comercial de código cerrado
  • ser libre (como en la cerveza) o casi libre

y preferir

  • fácil de usar
  • a prueba de futuro (sin proyecto muerto)
  • idealmente de código abierto

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í.

Muevo mi respuesta eliminada para comentar, ya que no puedo ver nada para mejorar aún más: no son literalmente bibliotecas de Java, pero según el contexto, es posible que pueda desembolsar bibliotecas estándar como tiff2pdf de Libtiff o ImageMagick . Además, recuerde considerar si PDF es realmente el formato que desea. ¿Quizás un DjVu será mejor?
@Nemo ¿Has borrado tu respuesta tú mismo? Considero que su respuesta es válida ya que PDF es un gran dolor y desembolsar es bastante trivial. Desafortunadamente, PDF es el requisito. Para tu información, yo uso org.apache.pdfbox. Pasé más tiempo con él de lo que quería, pero hizo el trabajo.
No, @Undo lo borró
Otra pregunta SO cerrada: stackoverflow.com/questions/6625849/…
Aquí hay una lista de alternativas activas de código abierto con comparaciones y estimaciones de popularidad: java.libhunt.com/categories/438-pdf

Respuestas (7)

yo texteo

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.

¿Qué pasa con los informes de Jasper? ¿Es esto mejor que iText?
@Vinayak Jasper Reports usa una versión antigua de iText. Comparar Jasper Reports con iText es como comparar un automóvil con su motor.
@BrunoLowagie, ¿puedo obtener una versión de iText con licencia de código abierto (AGPL) de forma gratuita? En caso afirmativo, ¿puedo usar iText en mi aplicación de Android y ejecutarlo en Google Play?
@RageshDAntony Sí, puede obtener una versión AGPL de iText de forma gratuita. Y sí, puede usarlo en una aplicación de Android de forma gratuita, pero solo con la condición de que ofrezca esa aplicación como una aplicación de código abierto de forma gratuita en las mismas condiciones ; es decir: su aplicación también debe ser 100% AGPL.
@BrunoLowagie. Gracias por la respuesta. Tengo otra pregunta. ¿Qué pasa si vendo mi aplicación por el costo pero al mismo tiempo también la mantengo como código abierto (como Redhat Enterprise Linux)?
No veo cómo funcionaría @RageshDAntony porque sus clientes le pagarían por una licencia para usar su software que no es una licencia AGPL. La comparación con RH Enterprise Linux es incorrecta, porque RH no vende ninguna licencia para usar Linux. RH no vende Linux "por costo".

LibreOffice

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.

Otro producto comercial que vi: PDF Java Toolkit

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:

  • Extraiga texto Unicode de archivos PDF.
  • Divida un solo PDF en muchos archivos o combine varios archivos PDF.
  • Extraiga datos de formularios PDF o complete un formulario PDF.
  • Valide archivos PDF con el estándar PDF/A-1b.
  • Imprima un archivo PDF utilizando la API de impresión estándar de Java.
  • Guarde archivos PDF como archivos de imagen, como PNG o JPEG.
  • Cree un PDF desde cero, con fuentes e imágenes incrustadas.
  • Firme digitalmente archivos PDF.
Este comentario es principalmente para ayudar a las personas que encuentren esta respuesta en el futuro, pero al momento de escribir, la biblioteca de PDFBox no tiene ningún tipo de diseño. Por ejemplo, sin columnas de texto, sin ajuste o justificación de texto, sin tablas. Si desea algún tipo de diseño, deberá usar una biblioteca de diseño separada. Un par de ejemplos en github son github.com/ralfstuckert/pdfbox-layout y github.com/gingerdroids/BlockFrame

jPDFWriter

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 Graphics2Den las páginas y luego guarde el documento.

  • jPDFWriter también amplía el Java estándar PrinterJobpara 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.

Lea Cómo no ser un spammer : debe declarar su afiliación con este producto en su publicación.

JODReportes

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.

Abrir PDF

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.