2009-11-06 54 views
12

Quiero convertir HTML (que contiene JavaScript) a un PDF. ¿Cómo puedo hacer eso?convertir HTML (que tiene Javascript) a PDF usando JavaScript

Solo quiero mostrar lo que se muestra en la página web. Estoy mostrando un diagrama de Gantt que es generado por una biblioteca de JavaScript.

Ahora quiero guardar esa página HTML como PDF, ¿cómo puedo hacer eso?

+9

¡Java es completamente diferente de Javascript! – Ikke

+1

lo sé, quiero una solución usando java o javascript. ambos son aceptables para mi –

+0

Algunas preguntas: ¿Java ya está presente en el proyecto? ¿Cómo funciona Javascript en esta tabla (imágenes, tabla, ...) y de dónde provienen los datos? Creo que tu pregunta no tendrá una solución directa. – sinuhepop

Respuesta

5

También estamos buscando una forma de convertir archivos html con JavaScript complejo a pdf. El javasript en nuestros archivos contiene document.write y DOM manipulación.

Hemos intentado utilizar una combinación de HtmlUnit para analizar los archivos y Flying Saucer para procesar en pdf pero los resultados no son lo suficientemente satisfactorios. Funciona, pero en nuestro caso el pdf no está lo suficientemente cerca de lo que el usuario quiere.

Si quiere probar esto, aquí hay un fragmento de código para convertir un archivo html local a pdf.

URL url = new File("test.html").toURI().toURL(); 
WebClient webClient = new WebClient(); 
HtmlPage page = webClient.getPage(url); 

OutputStream os = null; 
try{ 
    os = new FileOutputStream("test.pdf"); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.setDocument(page,url.toString()); 
    renderer.layout(); 
    renderer.createPDF(os); 
} finally{ 
    if(os != null) os.close(); 
} 
+1

su código oscila ... pero como ha mencionado, no es 100% correcto ... ¿Encontró algo nuevo para mejorar la calidad del pdf? –

+0

¿Cómo usar este código en una página de Visualforce? Lo necesito en la página de Salesforce Apex –

1

Puede usar iText para Java para convertir a PDF.

Using itext to convert HTML to PDF

he utilizado iText mucho y es muy fácil y se aprende rápido.

+2

No es gratis para comercial – Dejell

+1

@Odelya, así es si se puede aguantar el AGPL :-) – Pointy

+0

itext no ejecuta javascript al convertir html a pdf. –

0

Usando Print...opción del menú del navegador, se puede utilizar un controlador de impresora PDF , como PDFCreator. De esta forma, cualquier código JavaScript incluido en la página es procesado por el navegador cuando se procesa la página.

PDFCreator es una herramienta gratuita para crear archivos PDF desde casi cualquier aplicación de Windows.

  • crear archivos PDF desde cualquier programa que es capaz de imprimir
1

uso de un widget de navegador (like the one from SWT) para hacer que el gráfico como una imagen, y luego usar iText para crear PDF a partir de eso.

0

Con Docmosis o JODReports que puede alimentar a su HTML y Javascript al documento proceso que podría producir PDF o DOC y otros formatos de representación. La conversión debajo es realizada por OpenOffice por lo que los resultados dependerán de los filtros de importación de OpenOffice. Puede intentarlo manualmente guardando su página web en un archivo y luego cargándola con OpenOffice; si eso le parece lo suficientemente bueno, estas herramientas le permitirán obtener el mismo resultado que un PDF.

0

Copie y pegue esto en su sitio para proporcionar un enlace que convierta la página a una página PDF.

<a href="javascript:void(window.open('http://www.htmltopdfconverter.net/?convert='+window.location))">Convert To PDF</a> 
+6

ya no funciona. –

0

PhantomJS tiene el potencial de lograr esto con funcionalidad sea la captura de la que también es compatible con PDF.

En caso de que quiera algo que se pueda interactuar a través de la línea de comando; Intenté crear una aplicación para esa llamada Nota (todavía en su infancia). Permite que JavaScript represente/manipule y luego capture la página como un PDF.

1

recomiendo el uso de wkhtmltopdf: http://wkhtmltopdf.org/

+0

Tengo problemas para renderizar páginas HTML de tamaño A4 (con tamaño definido en milímetros). Solo elimina todos los márgenes cuando se especifica + aplicando un factor de zoom (sin sentido). ¿Por qué debería necesitar hacer zoom para eliminar los márgenes por completo? En mi opinión, este es un comportamiento defectuoso. Utilizo la biblioteca EssentialObjects.PDF, que hace un mejor trabajo al llenar todo el espacio A4. –

+0

@MikedeKlerk: Tuve algunos problemas similares con la impresión de páginas A4 pero lo resolví, sin embargo, no recuerdo la solución exacta pero una parte de ello especificaba el tamaño del documento html en píxeles en combinación con algunos argumentos de línea de comando para wkhtmltopdf . Eche un vistazo al manual, sospecho que los indicadores de margen podrían ser de ayuda: http://wkhtmltopdf.org/usage/wkhtmltopdf.txt – arkod

0

mira esto http://www.techumber.com/2015/04/html-to-pdf-conversion-using-javascript.html

Básicamente es necesario utilizar html2canvas y jspdf para hacer que funcione. Primero convertirá su dom en imagen y luego usará jspdf para crear el pdf con las imágenes.

EDITAR: Una breve nota sobre cómo funciona. Usaremos dos bibliotecas para hacer este trabajo. http://html2canvas.hertzen.com/ y https://github.com/MrRio/jsPDF Primero crearemos una imagen dom usando html2canvas, usaremos el método jspdf addImage para agregar esa imagen a pdf. Parece simple, pero hay pocos errores en jsPdf y html2cavas, por lo que es posible que tenga que cambiar el estilo dom temporalmente. Espero que esto ayude.

-1

usted puede hacerlo usando un plugin de jQuery,

this is the link. Sin embargo sus instrucciones pueden ser no trabajar, a fin de utilizar este enlace para obtener el plugin, está funcionando

Usa este código para enlazar el botón ...

$(document).ready(function() { 
    $("#button_id").click(function() { 
     window.print(); 
     return false; 
    }); 
}); 

Este enlace puede ser también útil: 10 jQuery PrintPdf Page Options

+0

¿Podría explicar en su respuesta que esta es una solución para guardar una página HTML como PDF? El Asker no dijo nada sobre la impresión ... – trincot

+0

"10 jQuery Print Page Options" es solo un nombre de enlace, este plugin dará una página HTML como PDF .., sin embargo hay un botón en el plugin cuyo nombre es "PRINT", pero dará un archivo pdf .. – Dushman

+0

OK , sería bueno agregar esta información en su respuesta, ya que es bastante sorprendente leer * Use este código para vincular el botón de impresión ... * cuando el Asker no mencionó ningún botón de impresión. – trincot