Saltar al contenido

Angular2 – Genera pdf a partir de HTML usando jspdf

Solución:

Lo que encontré funcionó fue agregar:

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>

al archivo index.html (presumiblemente podría estar en otro lugar).

Luego usé:

const elementToPrint = document.getElementById('foo'); //The html element to become a pdf
const pdf = new jsPDF('p', 'pt', 'a4');
pdf.addHTML(elementToPrint, () => {
    doc.save('web.pdf');
});

Que ya no usa html2canvas en el código.
A continuación, puede eliminar la siguiente importación:

import * as html2canvas from 'html2canvas';

En caso de que alguien prefiera no usar scripts cdn y le gustaría usar una forma más (angular), esto funcionó para mí en Angular 6:

El uso de esta manera le brindará un mejor soporte y autocompletado en el editor y lo ayudará a evitar depender de los scripts cdn (si desea evitarlos, como yo)

Basado en la excelente respuesta aquí y dado que fue difícil para mí encontrar esa respuesta, estoy volviendo a compartir lo que se indica en ella y me ayudó a usar jsPDF en Angular 6 (todo el crédito es para el autor original de esta respuesta)

Deberías ejecutar estos cmds:

npm install jspdf --save

typings install dt~jspdf --global --save

npm install @types/jspdf --save

Agregue lo siguiente en angular-cli.json:

"scripts": [ "../node_modules/jspdf/dist/jspdf.min.js" ]

html:

<button (click)="download()">download </button>

componente ts:

import { Component, OnInit, Inject } from '@angular/core';
import * as jsPDF from 'jspdf'
@Component({
  ...
  providers: [
    { provide: 'Window',  useValue: window }
  ]
})
export class GenratePdfComponent implements OnInit {

  constructor(
    @Inject('Window') private window: Window,
    ) { }

  download() {

        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?');

        // Save the PDF
        doc.save('Test.pdf');
    }
}

Cualquiera que todavía esté tratando de convertir un div Html en un pdf puede optar por usar html2pdf, con un par de líneas puede hacer todo con facilidad.

var element = document.getElementById('element-to-print');
html2pdf(element);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *