2011-09-08 38 views
42

Duplicar posibles:
PDF Generation Library for JavaCrear PDF con Java

Estoy trabajando en un programa de factura de una empresa de contabilidad local. ¿Cuál es una buena manera de crear un archivo PDF con Java? ¿Alguna buena biblioteca? Soy totalmente nuevo en la exportación de PDF (en cualquier idioma).

+0

Posible duplicado de [Lista de convertidores de HTML a PDF] (http://stackoverflow.com/questions/3178448/list-of-html-to-pdf-converters), que se menciona en [Conversión de archivos HTML a PDF ] (http://stackoverflow.com/questions/633780/converting-html-files-to-pdf). – trashgod

Respuesta

65

prefiero dar salida a mis datos en XML (utilizando Castor, XStream o JAXB), a continuación, transformándola usando una hoja de estilo XSLT en XSL-FO y hacer que con Apache FOP en formato PDF. Trabajó hasta el momento para informes de 10 páginas y manuales de 400 páginas. Encontré esto más flexible y más flexible que generar archivos PDF en código usando iText.

+0

¿Qué tan rápido puede esto convertir un manual de 400 páginas en PDF? He usado iText, pero es demasiado lento para algunos de nuestros documentos grandes. –

+0

Lo siento, hice esto en 2005-2007, pero IIRC fue inferior al segundo para un informe simple de 10 páginas (con una hoja de estilo en caché) y docenas de segundos para un informe de 400 páginas más complejo. Guarde en caché la hoja de estilos XSL analizada cuando necesite generar informes similares o similares con datos diferentes, lo que supone un gran impulso. –

+0

También puedo recomendar Velocity para enviar datos a xml. –

29

A continuación se presentan algunas bibliotecas para crear PDF con Java:

  1. iText
  2. Apache PDFBox
  3. BFO

he utilizado iText para genarating de PDF con un poco de dolor en el pasado.

O puede intentar usar FOP: FOP es un formateador XSL escrito en Java. Se utiliza junto con un motor de transformación XSLT para formatear documentos XML en PDF.

+14

En el sitio iText, leí que su licencia AGPL requiere de usted "la distribución de todos los códigos fuente, incluido su propio producto, incluso si se trata de una aplicación web", entre otras cosas. Parece ser completamente inaceptable para cualquier proyecto comercial. – mvmn

+0

@mvmn: puedes comprar una licencia comercial. – Thilo

+0

O puede usar iText 1.3 que es GNU Affero General Public License v3 –

13

Otra alternativa sería JasperReports: JasperReports Library. Utiliza iText en sí mismo y es más que una biblioteca de PDF que solicitó, pero si se ajusta a sus necesidades, lo conseguiría.

En pocas palabras, le permite diseñar informes que se pueden llenar durante el tiempo de ejecución. Si usa un custom datasource, puede integrar JasperReports fácilmente en el sistema existente. Le ahorraría todos los problemas de diseño, p. Ej. cuando las facturas abarcan más sitios donde cada lado debe tener un pie de página, etc.