2012-03-17 43 views
6

Tengo una página web en la que una cantidad considerable del contenido se crea dinámicamente (jquery ajax, etc.) y tengo el requisito de presentar una versión imprimible de la misma.

Me estoy encontrando con todos los problemas habituales de html/impresión, que probablemente puedo (dar) de ronda, pero me hizo pensar: ¿hay alguna manera de tomar el DOM y generar un PDF a partir de él utilizando javascript Es probablemente una pregunta un poco tonta, suena un poco complicado, y no estoy muy seguro de que, incluso si pudiera crear un archivo PDF usando JavaScript, cómo lo presentaría al usuario.

¿Qué piensa la gente?Crear PDF imprimible desde html dom

Respuesta

2
var doc = new jsPDF(); 
doc.text(20, 20, 'Hello world!'); 
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.'); 
doc.addPage(); 
doc.text(20, 20, 'Do you like that?'); 
// Output as Data URI 
doc.output('datauri'); 

https://parall.ax/products/jspdf, creo que esto le ayudará a

+0

Hola, gracias, se ve muy bien. Tenía la esperanza de poder salirse con la suya básicamente tomando lo que ya estaba construido en el DOM y simplemente dando algunos detalles más (tamaño de página y similares). – Jonny

+0

@Moo Solo mira si esto te ayuda, [link] http://code.google.com/p/dompdf/ –

+0

@Moo [link] http://stackoverflow.com/questions/1686280/convert-html-having -javascript-to-pdf-using-java-javascript –

0

This es una pregunta que hice hace unos días sobre un tipo similar de sitio/problema.

Mi solución ha sido: (1) en Javascript, establecer una cookie y llamar a un script PHP usando location.href = ...; (no AJAX) y luego (2) tener el script PHP accediendo a la cookie para determinar el tipo de informe requerido , y luego repetir un formulario que solicita al usuario descargar un archivo usando los encabezados correctos. El PHP era algo como lo siguiente:

header("Content-type: application/vnd.ms-word"); 
header("Content-Disposition: attachment;Filename=test.doc"); 

echo "<html>"; 
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">"; 
echo "<body>"; 
echo "Testing-2-3!"; 
echo "</body>"; 
echo "</html>"; 

Resultó imposible para conseguir lo que quería que sucediera el uso de AJAX AJAX porque nunca se le permite solicitar al usuario.

Puede utilizar este método para hacer algo similar, pero en su caso generaría un archivo PDF en vez de .doc (o descargar uno que ya está preparado).

Una ventaja de este método, por supuesto, es que no implica recargas de página.

+0

Hmm, interesante. Voy a jugar con esta idea. Tengo un problema porque tengo algunos gráficos en la página que están compilados en javascript (zingcharts), por lo que tendría que volver a colocar las imágenes en el servidor para crear un PDF (o regenerar los gráficos en php). En última instancia, estoy tratando de ser flojo: tengo una buena representación de lo que quiero en la pantalla (html) en el cliente. Simplemente no puedo lograr que todos los navegadores jueguen a la pelota cuando se trata de imprimir. – Jonny

+0

Voy a usar las dos respuestas sugeridas. Gracias por tu ayuda. – Jonny