2010-02-25 22 views
9

Necesito ser capaz de convertir HTML dinámico (html que se representa en la página carga por javascript) a un PDF. Sé que hay muchos convertidores de HTML a PDF, pero ninguno de los que he encontrado hasta ahora lo hacen con HTML dinámico.HTML dinámico a PDF

La herramienta dada debe ser capaz de convertir con éxito la siguiente página - http://www.simile-widgets.org/timeline/

Saludos Anthony

ACTUALIZACIÓN:

No necesito la funcionalidad JavaScript aquí ... es decir, i don No es necesario que pueda interactuar con la pantalla ... Solo quiero que la representación final de la pantalla se capture en el PDF, como tomar una foto después de cargar la página. Y en el ejemplo que proporcioné, javascript solo está representando divs en la pantalla, por lo que no es nada que no debería ser capaz de manejar, siempre y cuando "deje" que la "página" se renderice primero.

+1

Como hay tantas preguntas similares a esta, pero no exactamente iguales, decidí intentar recopilar una lista completa de convertidores de HTML a PDF en una pregunta wiki de la comunidad http://stackoverflow.com/questions/3178448/ list-of-html-to-pdf-converters – rjmunro

+0

@rjmunro - eso sonó realmente útil, pero la página se ha ido - ¿lograste publicar la lista en otro lugar? – EML

+0

¿Encontró una respuesta? – EML

Respuesta

1

No hay forma de que se pueda hacer. Las interfaces disponibles para los scripts en PDF son extremadamente limitadas en comparación con el acceso total DOM y BOM que disfruta en un navegador web. Tal interacción como usted puede lograr en PDF no es fácilmente traducible de cómo funciona en un navegador y casi con seguridad necesitaría la creación manual.

Su página de ejemplo tiene muchos efectos que el PDF, como formato de diseño de documento esencialmente estático, simplemente no puede reproducirse en absoluto.

Editar:

sólo quiero la prestación florón de la pantalla para ser capturado en el PDF

Ah, bien, eso es un problema mucho más fácil y más común entonces.

En ese caso, tendrá que utilizar y automatizar el propio navegador Web (Firefox), o un conjunto de herramientas que proporciona toda la lógica de un navegador web (como WebKit), entonces:

  • exportar a PDF, ya sea usando herramientas incorporadas como 'Imprimir en archivo' en Firefox (con imágenes de fondo/colores activados) o uno de los complementos de exportación PDF, o

  • tomar una instantánea de la imagen del navegador (e incluya la imagen en un PDF si es necesario)

Consulte thesequestions para obtener más información sobre la creación de instantáneas del navegador.

+0

No es cierto. Flash se puede agregar a archivos pdf ahora. Sin embargo, no conozco una ruta de conversión de javascript a actionscript/flash. :) – ghoppe

-1

Pruebe xhtml2pdf. Aquí está el project page at python.org.

+0

Él quiere una solución que comprenda los cambios en la página hecha por JavaScript. –

+0

No puedo ver dónde puedo probar una página HTML en vivo y no dice mucho sobre javascript o dhtml. –

+0

Lo sentimos, hay un enlace a la página del proyecto python para Pisa. He cambiado mi enlace – ghoppe

0

Puede usar un URI de JavaScript para alertar al DOM actual. por ejemplo:

javascript:alert("<html>" + document.documentElement.innerHTML + "</html>") 

Copie el código HTML y guárdelo en un archivo.
Luego ejecútelo a través del convertidor HTML2PDF.

+0

Tiene que ser un proceso automatizado ... es decir, el usuario hace clic en un botón y puede descargue un informe ... –

+0

Si se refiere a un botón en la página (en lugar del navegador), entonces obviamente controla el sitio para que pueda usar XMLHttpRequest para PUBLICAR el HTML en el servidor y ejecutarlo a través del convertidor en el servidor. –

0

El hecho de que utilice cualquier JavaScript significa que muchos convertidores no funcionarán. El JavaScript puede ser simple, pero aún necesita un intérprete para manejarlo.

No lo he usado, pero puede intentar wkhtmltopdf. Utiliza el motor de renderizado webkit, y creo que incluye soporte completo de JavaScript. Debería poder instalar el software y ejecutar el ejecutable, pero de lo contrario debería ser bastante sencillo.