Typescript-как правильно использовать jsPDF в Angular2?
Я создал приложение Angular2, которое генерирует данные JSON. Я хочу сохранить этот вывод JSON в файл, предпочтительно PDF-файл. Это приложение написано с помощью Typescript.
я использовал jsPDF для записи данных JSON в PDF-файл. Я установил пакет jsPDF через npm, используя npm install jspdf --save
. Я также добавил ссылки в индекс.HTML-страница. Я внес эти изменения в свое приложение, когда оно было запущено. Я смог сохранить данные JSON в файл.
когда я остановил и перезапустил приложение, оно не запустилось, как ожидалось. Я получил следующую ошибку:
json-excel@1.0.0 начать C:Users * * * * * * документыпроектыAngularjson-to-pdf
ТСК && совместительству "НПМ запустить ЦТП:ж" "НПМ запустить лайт"
app / компоненты / app.деталь.ts (35,19): ошибка TS2304: не удается найти имя 'jsPDF'.
Я добавляю код, который я использовал.
пакета.в 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"
}
.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>
<!-- 3. Display the application -->
<body class="bg">
<div>
<app>Loading...</app>
</div>
</body>
</html>
app.деталь.ТС:
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');
}
}
Я думаю, что некоторые инструкции импорта отсутствует в приложении.деталь.файл ТС. Может ли кто-нибудь указать на правильный оператор import, если это то, чего не хватает? Если это ошибка, которую я сделал, могу ли я знать, как правильно нас jsPDF в Angular2?
спасибо.
2 ответов
использование jspdf с последней угловой версией cli очень просто. Просто установите jspdf из npm и используйте его примерно так:
app.деталь.ТС
// Note that you cannot use import jsPDF from 'jspdf' if you
// don't install jspdf types from DefinitelyTyped
let jsPDF = require('jspdf');
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
constructor() {
let doc = new jsPDF();
doc.text("Hello", 20, 20);
doc.save('table.pdf');
}
}
для старых версий angular cli на основе systemjs вместо webpack
вот ссылка к описанию одного из способов работы с angular-cli
и библиотеки в umd
или простой javascript. Это в основном включает в себя использование declare jsPDF: any
вместе с импортом библиотеки в файлы поставщика systemjs.
путь вы сделали бы используя Угловое-cli и Угловое 4 сначала добавьте jspdf в массив скриптов .угловой-cli.в JSON
"scripts": [
"../node_modules/jspdf/dist/jspdf.min.js"
]
затем в компоненте добавьте следующее
import * as JSPdf from 'jspdf';
тогда в вашем классе
generatePdf() {
let doc = new JSPdf();
doc.text("Hello", 20, 20);
doc.save('table.pdf');
}