Convertir archivos HTML a PDF [cerrado]

Resuelto panschk asked hace 15 años • 8 respuestas

Necesito generar automáticamente un archivo PDF a partir de un documento (X)HTML existente. Los archivos de entrada (informes) utilizan un diseño bastante simple basado en tablas, por lo que probablemente no sea necesario el soporte para elementos JavaScript/CSS realmente sofisticados.

Como estoy acostumbrado a trabajar en Java, es preferible una solución que pueda usarse fácilmente en un proyecto Java. Sin embargo, sólo necesita funcionar en sistemas Windows.

Una forma de hacerlo que es factible, pero que no produce resultados de buena calidad (al menos lista para usar) es usar CSS2XSLFO y Apache FOP para crear los archivos PDF. El problema que encontré fue que, si bien los atributos CSS se convierten bien, el diseño de la tabla está bastante desordenado y el texto sale de la celda de la tabla.

También eché un vistazo rápido a Jrex, una API de Java para usar el motor de renderizado Gecko.

¿Existe tal vez una manera de tomar la página renderizada desde el motor de renderizado de Internet Explorer y enviarla automáticamente a una herramienta de impresora PDF? No tengo experiencia en programación OLE en Windows, por lo que no tengo idea de qué es posible y qué no.

¿Tienes una idea?

panschk avatar Mar 11 '09 15:03 panschk
Aceptado

El proyecto de renderizado Flying Saucer XHTML admite la salida de XHTML a PDF. Eche un vistazo a un ejemplo aquí .

Mark avatar Mar 11 '2009 09:03 Mark

¿Probaste WKHTMLTOPDF ?

Es una utilidad de shell simple, una implementación de código abierto de WebKit. Ambos son gratis.

Hemos creado un pequeño tutorial aquí.

EDITAR (2017):

Si fuera a construir algo hoy, ya no seguiría ese camino.
Pero usaría http://pdfkit.org/ en su lugar.
Probablemente quitándolo de todas sus dependencias de nodejs para ejecutarlo en el navegador.

Mic avatar Aug 31 '2009 20:08 Mic

Consulte iText ; Es un kit de herramientas PDF de Java puro que admite la lectura de datos de HTML. Lo usé recientemente en un proyecto en el que necesitaba extraer contenido de nuestro CMS y exportarlo como archivos PDF, y todo fue bastante sencillo. El soporte para CSS y etiquetas de estilo es bastante limitado, pero representa tablas sin ningún problema (aunque nunca logré establecer el ancho de la columna).

Crear un PDF a partir de HTML es algo como esto:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
fred-o avatar Mar 11 '2009 09:03 fred-o

Si tiene los fondos, nada supera a Prince XML , como muestra este vídeo

Ólafur Waage avatar Mar 11 '2009 09:03 Ólafur Waage

¿Existe tal vez una manera de tomar la página renderizada desde el motor de renderizado de Internet Explorer y enviarla automáticamente a una herramienta de impresora PDF?

Así es como funciona ActivePDF , lo cual es bueno, significa que sabes lo que obtendrás y, de hecho, tiene un soporte de estilo razonable.

También es uno de los pocos paquetes que encontré (cuando miré hace unos años) que realmente admite varios comandos CSS de salto de página.


Desafortunadamente, el software ActivePDF es muy frustrante: dado que tiene que iniciar el navegador IE en segundo plano para las conversiones, puede ser bastante lento y tampoco es particularmente estable.

Actualmente hay una nueva versión Beta que se supone que es mucho mejor, pero en realidad no he tenido la oportunidad de probarla, así que no sé en qué medida supone una mejora.

Peter Boughton avatar Mar 11 '2009 09:03 Peter Boughton