I created an Angular2 application that generates JSON data. I want to save this JSON output to a file, preferably a PDF file. This application is written using Typescript.
I used jsPDF to write JSON data to a PDF file. I installed the jsPDF package through npm using npm install jspdf --save. I also added the necessary links on the index.html page. I made these changes to my application when it was launched. I was able to save the JSON data to a file.
When I stopped and restarted the application, it did not start as expected. I got the following error:
json-excel@1.0.0 start C: \ Users ***** \ Documents \ Projects \ Angular \ json-to-pdf
tsc && at the same time "npm run tsc: w" "npm run lite"
app / components / app.component.ts (35.19): TS2304 error: cannot find name 'jsPDF'.
I am adding the code that I used.
package.json:
"dependencies": {
"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.1",
"angular2-in-memory-web-api": "0.0.7",
"bootstrap": "^3.3.6",
"es6-shim": "^0.35.0",
"jquery": "^2.2.4",
"jspdf": "^1.2.61",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"systemjs": "0.19.27",
"zone.js": "^0.6.12"
}
index.html
<html>
<head>
<title>JSON to PDF</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
....
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script>
....
</head>
<body class="bg">
<div>
<app>Loading...</app>
</div>
</body>
</html>
app.component.ts:
import {Component} from '@angular/core';
@Component({
selector: 'app',
template: `<button (click)="createFile()">Export JSON to PDF</button>`
})
export class AppComponent {
public item = {
"Name" : "XYZ",
"Age" : "22",
"Gender" : "Male"
}
constructor() {}
createFile(){
var doc = new jsPDF();
var i=0;
for(var key in this.item){
doc.text(20, 10 + i, key + ": " + this.item[key]);
i+=10;
}
doc.save('Test.pdf');
}
}
I think there is some import statement in the app.component.ts file. Can someone point to the correct import statement if this is not enough? If this is the mistake I made, can I know how to use jsPDF in Angular2 correctly?
Thank.