Tengo el siguiente código html:
<!DOCTYPE html>
<html>
<body>
<p>don't print this to pdf</p>
<div id="pdf">
<p><font size="3" color="red">print this to pdf</font></p>
</div>
</body>
</html>
Todo lo que quiero hacer es imprimir en pdf lo que se encuentre en el div con una identificación de "pdf". Esto debe hacerse usando JavaScript. El documento "pdf" se debe descargar automáticamente con un nombre de archivo de "foobar.pdf"
He estado usando jspdf para hacer esto, pero la única función que tiene es "texto" que acepta solo valores de cadena. Quiero enviar HTML a jspdf, no texto.
javascript
jspdf
John Crawford
fuente
fuente
fromHTML
función; vea el ejemplo de " RepresentadorRespuestas:
jsPDF puede usar complementos. Para permitirle imprimir HTML, debe incluir ciertos complementos y, por lo tanto, debe hacer lo siguiente:
Si desea ignorar ciertos elementos, debe marcarlos con un ID, que luego puede ignorar en un controlador de elementos especial de jsPDF. Por lo tanto, su HTML debería verse así:
Luego, usa el siguiente código JavaScript para abrir el PDF creado en una ventana emergente:
Para mí, esto creó un PDF bonito y ordenado que solo incluía la línea 'imprimir esto a pdf'.
Tenga en cuenta que los controladores de elementos especiales solo tratan con ID en la versión actual, que también se indica en un problema de GitHub . Afirma:
Por lo tanto, reemplazar '#ignorePDF' con selectores de clase como '.ignorePDF' no funcionó para mí. En su lugar, tendrá que agregar el mismo controlador para todos y cada uno de los elementos, que desea ignorar como:
De los ejemplos también se afirma que es posible seleccionar etiquetas como 'a' o 'li'. Sin embargo, eso podría ser un poco restrictivo para la mayoría de los casos de uso:
Una cosa muy importante para agregar es que pierde toda su información de estilo (CSS). Afortunadamente, jsPDF es capaz de formatear bien h1, h2, h3, etc., lo cual fue suficiente para mis propósitos. Además, solo imprimirá texto dentro de nodos de texto, lo que significa que no imprimirá los valores de áreas de texto y similares. Ejemplo:
fuente
<div>
, que podría ser uno de cientos, por lo que tiene que marcar todos los elementos DOM no deseados.Esta es la solución simple. Esto funciona para mí. Puede usar el concepto de impresión de JavaScript y simplemente guardarlo como pdf.
fuente
Puede usar autoPrint () y establecer la salida en 'dataurlnewwindow' de esta manera:
fuente
Si necesita descargar PDF de una página específica, simplemente agregue un botón como este
use window.print () para imprimir toda su página, no solo un div
fuente
document.querySelector("#myIframe").contentWindow.print()
Como se mencionó, debe usar jsPDF y html2canvas . También he encontrado una función dentro de los problemas de jsPDF que divide automáticamente su PDF en varias páginas ( fuentes )
fuente
Una forma es usar la función window.print (). Que no requiere ninguna biblioteca
Pros
1.No requiere biblioteca externa.
2. También podemos imprimir solo partes seleccionadas del cuerpo.
3.No hay conflictos de CSS y problemas de js.
4.Core funcionalidad html / js
--- Simplemente agregue el siguiente código
CSS para
Código JS - Llamada función bewlow en btn click
Nota: Use! Important en cada objeto css
Ejemplo
fuente
Yo uso jspdf y html2canvas para renderizar css y exporto contenido de div específico ya que este es mi código
fuente
http://...domain.../path.css
o menos. Crea un documento HTML separado y no tiene contexto de lo principal.Esto me sirvió durante años:
fuente
<body >
que necesita: PSi desea exportar una tabla, puede ver esta muestra de exportación proporcionada por el widget Shield UI Grid.
Se hace extendiendo la configuración de esta manera:
fuente
Utilice pdfMake.js y este Gist .
(Encontré el Gist aquí junto con un enlace al paquete html-to-pdfmake , que termino sin usar por ahora).
Después
npm install pdfmake
y guardando el Gist enhtmlToPdf.js
lo uso así:Observaciones:
pdfMake
lagetBuffer()
función de), todo desde el navegador. El pdf generado resulta ser mejor para este tipo de html que con otras soluciones que he probado.jsPDF.fromHTML()
sugerido en la respuesta aceptada, ya que esa solución se confunde fácilmente con caracteres especiales en mi HTML que aparentemente se interpretan como una especie de marcado y confunden totalmente el PDF resultante.jsPDF.from_html()
función obsoleta , que no debe confundirse con la de la respuesta aceptada) no es una opción para mí, ya que quiero que el texto en el PDF generado sea pegable, mientras que las soluciones basadas en lienzo generan archivos PDF basados en mapas de bits.fuente
Pude obtener jsPDF para imprimir tablas creadas dinámicamente desde un div.
Funciona muy bien con Chrome y Firefox ... el formato está explotado en IE.
También incluí estos:
fuente
Para capturar div como PDF, puede usar la solución https://grabz.it . Tiene una API de JavaScript que es fácil y flexible y le permitirá capturar el contenido de un único elemento HTML, como un div o un span
Para implementarlo, primero deberá obtener una clave y un secreto de la aplicación y descargar el SDK (gratuito).
Y ahora un ejemplo.
Digamos que tienes el HTML:
Para capturar lo que está debajo de la identificación de características, necesitará:
Por favor tenga en cuenta el
target: #feature
.#feature
¿eres tu selector de CSS, como en el ejemplo anterior? Ahora, cuando se carga la página, se creará una captura de pantalla de la imagen en la misma ubicación que la etiqueta del script, que contendrá todo el contenido de las funciones div y nada más.Hay otra configuración y personalización que puedes hacer con el mecanismo de captura de pantalla div, por favor échale un vistazo aquí
fuente