how to use jsPDF and jspdf-autotable in angular 5

后端 未结 10 849
北海茫月
北海茫月 2021-01-06 01:46

I am trying to use jsPDF and jspdf-autotable in my Angular 5.2.0 project. My package.json is below (related parts):

\"dependencies\": {
    ...
    \"jspdf\"         


        
相关标签:
10条回答
  • 2021-01-06 02:37

    To work with jspdf-autotable in angular 5, one must install jspdf and jspdf-autotable via npm

    npm install jspdf-autotable --save
    

    also add the jspdf and jspdf-autotable files to the scripts array in angular-cli.json

    "scripts": [
        "../node_modules/jspdf/dist/jspdf.min.js",
        "../node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.js"
    ],
    

    and in component never import jspdf or jspdf-autotable just

    declare var jsPDF: any;
    

    Of course before working with jspdf-autotable one should install jspdf and for development @types/jspdf via npm

    npm install jspdf --save
    npm install @types/jspdf --save-dev
    
    0 讨论(0)
  • 2021-01-06 02:42

    Is working for me Angular 5.

    To work with jspdf-autotable in angular 5, one must install jspdf and jspdf-autotable via npm

    npm install jspdf --save
    npm install @types/jspdf --save-dev
    npm install jspdf-autotable --save
    

    also add the jspdf and jspdf-autotable files to the scripts array in angular-cli.json

    "scripts": [
    "../node_modules/jspdf/dist/jspdf.min.js",
    "../node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.js"
    ],
    

    and in component never import jspdf or jspdf-autotable just.

    Forget about the following import.

    
    
        import * as jsPDF from 'jspdf'; 
        import 'jspdf-autotable';
    
    
    

    Just use Before @Component:

    declare var jsPDF: any;
    

    Your component (related parts ):

    declare var jsPDF: any;
    
    @Component({
        selector: "energy-login",
        templateUrl: "./login.component.html",
        styleUrls: ["./login.component.scss"]
    })
    
    export class MyComponent implements OnInit {
    
        constructor() {}
    
        ngOnInit() {}
    
        downloadPDF() {
    
            let columns = ["ID", "Name", "Country"];
            let rows = [
                [1, "Shaw", "Tanzania"],
                [2, "Nelson", "Kazakhstan"],
                [3, "Garcia", "Madagascar"],
            ];
    
            let doc = new jsPDF('l', 'pt');
            doc.autoTable(columns, rows); // typescript compile time error
            doc.save('table.pdf');
            }
        }
    
    0 讨论(0)
  • 2021-01-06 02:46

    If you could use declare var jsPDF: any; it is working for Chrome, IE and other browsers too, but it is not working for Firefox browser.

    In this case, you could follow the below steps:

    declare const require: any;
    const jsPDF = require('jspdf');
    require('jspdf-autotable');
    

    and other parts remain same like:

    npm install jspdf --save
    npm install @types/jspdf --save-dev
    npm install jspdf-autotable --save
    
    "scripts": [
        "../node_modules/jspdf/dist/jspdf.min.js",
        "../node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.js"
    ],
    

    So, it will defiantly work on all the browsers. how simple it is :)

    0 讨论(0)
  • 2021-01-06 02:46

    Declare doc as any type. That will fix the error "[ts] Property 'autoTable' does not exist on type 'jsPDF'."

    let doc:any = new jsPDF('l', 'pt');

    0 讨论(0)
提交回复
热议问题