página HTML dinámica a pdf

Sé que hay una lista de preguntas similares, pero todas manejan páginas sin interacción del usuario (estáticas aunque algunos js pueden estar allí).

Digamos que tenemos una página en la que el usuario puede interactuar (por ejemplo, svg que cambios o tablas html con desglose: cambios de contenido). Esas interacciones cambiarán la página. Lo mismo sucede en stackoverflow al ingresar la pregunta ...

La idea es agregar un botón, "convertir a pdf" tomando el estado del html y enviando al usuario una versión en pdf (tenemos un servidor Java).

Usar la impresión del navegador no es la respuesta que estoy buscando :-).

¿Es esto un palo en la luna?

preguntado el 22 de mayo de 12 a las 17:05

3 Respuestas

Tendría que almacenar los parámetros que generan la vista HTML (es decir, en qué hace clic el usuario, qué selecciones hace, etc.). Si puede tener una lista de parámetros que generan la vista HTML, puede tener un método que acepta la lista de parámetros (¿publicación JSON?), genera la vista HTML y la pasa a su rutina de generación de PDF. No estoy muy familiarizado con las bibliotecas de Java para este propósito, pero PHP tiene TCPDF que puede tomar la salida html para generar básicamente un PDF para usted. Ciertamente, hay bibliotecas de Java que le permitirán hacer lo mismo, o puede usar los parámetros para obtener una lista de filas/matrices que se pueden iterar y generar usando la biblioteca PDF de su elección.

contestado el 22 de mayo de 12 a las 17:05

El problema es que la interacción del usuario no son realmente parámetros (url) sino interacciones. Por ejemplo, el texto que estoy agregando como comentario se agregaría a "to PDF"... extraño, estoy de acuerdo :-) - ic3

No tienen que ser parámetros necesariamente para la visualización, pero necesitaría parámetros equivalentes para que las interacciones se puedan convertir en tales (es decir, search=Search%20for%20this&expanded_categories=1,2,5,20&.. ..). Luego puede, utilizando los parámetros, generar la misma visualización, restricción, página, etc., en la memoria y trabajar con la biblioteca PDF. - Alex Gámez

Ambos iTextPDF y Aspose.PDF te permitiría hacer eso (los he visto usados ​​en dos proyectos diferentes), pero no hay magia y tendrás que trabajar un poco.

Los pasos son aproximadamente:

  1. Obtenga (como una cadena) la parte del documento que desea imprimir con jQuery o innerHTML
  2. Llame a un servicio en el lado del servidor para convertir esto a PDF
  3. [Lado del servidor] Use una herramienta basada en listas blancas para limpiar el hmtl (a menos que quiera ser pirateado). JSoup es genial para eso.
  4. [Serverside] Use IText o Aspose API para crear el PDF desde el HTML (esto no es trivial, tendrá que leer el documento)
  5. Descargar el documento

contestado el 22 de mayo de 12 a las 17:05

También recomendaría DocRaptor, una API de HTML a PDF creada por mi empresa, Expected Behavior.

DocRaptor usa Prince XML para generar archivos PDF y, por lo tanto, produce resultados de mayor calidad que productos similares.

Agregar la generación de PDF a su propia aplicación web usando nuestro servicio es tan simple como hacer una solicitud HTTP POST a nuestro servidor.

Aquí hay un enlace a la página de inicio de DocRaptor:

Doctor Raptor

Y un enlace a nuestra documentación API:

Documentación de la API de DocRaptor

contestado el 24 de mayo de 12 a las 21:05

necesitamos una solución que pueda funcionar sin conexión (sin conexión a su servidor) - ic3

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.