doc.fromHTML 不是 angular 6 的函数
doc.fromHTML is not a function with angular 6
我想将模板 html 导出为 pdf,我正在尝试将 jsPDF 库与 angular 一起使用,但是我得到了这个错误 doc.fromHTML 不是一个函数。
import { Component, ViewChild, ElementRef } from '@angular/core';
import * as jsPDF from 'jspdf';
// declare var jsPDF: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'exports-pdf';
@ViewChild('exports') exports: ElementRef;
public print(): void {
const doc = new jsPDF('p', 'pt', 'letter');
const content = this.exports.nativeElement;
const margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
console.log(doc);
setTimeout(() => {
doc.fromHTML(content.innerHTML, margins.left, margins.top, {}, function() {
doc.output('export.pdf');
}, margins);
}, 100);
}
}
我也试过用import * as jsPDF from 'jspdf'; or declare var jsPDF: any;
当我使用 declare var jsPDF: any
时,我在控制台上拥有所有 jsPDF 属性,但是当我单击按钮时没有任何反应。当我使用 import * as jsPDF from 'jspdf'
时,我有一个没有任何属性的对象,如下图所示:
在 angular.json 中,我在脚本中输入了导入
"scripts": [
"./node_modules/jspdf/dist/jspdf.min.js",
"./node_modules/jspdf/dist/jspdf.debug.js"
]
错误继续。
我发现其他人也有同样的错误,但没有解决办法。我不知道这是一个库错误还是 angular 它不能很好地工作。
我把代码上传到GitHub。
从您的代码中删除我评论的内容。要导出为 pdf,您需要使用 save function
doc.save("export.pdf");
app.component.ts
import { Component, ViewChild, ElementRef } from '@angular/core';
// import { log } from 'util'; ** REMOVE **
// import * as jsPDF from 'jspdf'; ** REMOVE **
declare var jsPDF: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'exports-pdf';
@ViewChild('exports') exports: ElementRef;
public print(): void {
const doc = new jsPDF('p', 'pt', 'letter');
const content = this.exports.nativeElement;
const margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
console.log(doc);
// setTimeout(() => { ** REMOVE **
doc.fromHTML(content.innerHTML, margins.left, margins.top, {}, function () {
// doc.output('export.pdf'); ** REMOVE **
doc.save("export.pdf");
}, margins);
// }, 100); ** REMOVE **
}
}
angular.json
"scripts": [
"./node_modules/jspdf/dist/jspdf.min.js",
// "./node_modules/jspdf/dist/jspdf.debug.js" ** REMOVE **
]
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ExportsPdf</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<!-- ** REMOVE ** <script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.debug.js"></script> -->
</head>
<body>
<app-root></app-root>
</body>
</html>
我想将模板 html 导出为 pdf,我正在尝试将 jsPDF 库与 angular 一起使用,但是我得到了这个错误 doc.fromHTML 不是一个函数。
import { Component, ViewChild, ElementRef } from '@angular/core';
import * as jsPDF from 'jspdf';
// declare var jsPDF: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'exports-pdf';
@ViewChild('exports') exports: ElementRef;
public print(): void {
const doc = new jsPDF('p', 'pt', 'letter');
const content = this.exports.nativeElement;
const margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
console.log(doc);
setTimeout(() => {
doc.fromHTML(content.innerHTML, margins.left, margins.top, {}, function() {
doc.output('export.pdf');
}, margins);
}, 100);
}
}
我也试过用import * as jsPDF from 'jspdf'; or declare var jsPDF: any;
当我使用 declare var jsPDF: any
时,我在控制台上拥有所有 jsPDF 属性,但是当我单击按钮时没有任何反应。当我使用 import * as jsPDF from 'jspdf'
时,我有一个没有任何属性的对象,如下图所示:
在 angular.json 中,我在脚本中输入了导入
"scripts": [
"./node_modules/jspdf/dist/jspdf.min.js",
"./node_modules/jspdf/dist/jspdf.debug.js"
]
错误继续。
我发现其他人也有同样的错误,但没有解决办法。我不知道这是一个库错误还是 angular 它不能很好地工作。
我把代码上传到GitHub。
从您的代码中删除我评论的内容。要导出为 pdf,您需要使用 save function
doc.save("export.pdf");
app.component.ts
import { Component, ViewChild, ElementRef } from '@angular/core';
// import { log } from 'util'; ** REMOVE **
// import * as jsPDF from 'jspdf'; ** REMOVE **
declare var jsPDF: any;
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'exports-pdf';
@ViewChild('exports') exports: ElementRef;
public print(): void {
const doc = new jsPDF('p', 'pt', 'letter');
const content = this.exports.nativeElement;
const margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
console.log(doc);
// setTimeout(() => { ** REMOVE **
doc.fromHTML(content.innerHTML, margins.left, margins.top, {}, function () {
// doc.output('export.pdf'); ** REMOVE **
doc.save("export.pdf");
}, margins);
// }, 100); ** REMOVE **
}
}
angular.json
"scripts": [
"./node_modules/jspdf/dist/jspdf.min.js",
// "./node_modules/jspdf/dist/jspdf.debug.js" ** REMOVE **
]
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ExportsPdf</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<!-- ** REMOVE ** <script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.debug.js"></script> -->
</head>
<body>
<app-root></app-root>
</body>
</html>