我想将我的HTML模板的一部分转换为PDF文件,以便用户可以选择下载它。 (例如,他们点击按钮后)。
我找到了一个名为jsPDF的库,如何在Angular2应用程序(RC4)中使用jsPDF?
谢谢
答案 0 :(得分:18)
如果你想在制作中使用它,你肯定不想依赖你的index.html中引用的互联网链接,就像@khalil_diouri提出的那样。
因此,要在Angular2 / Typescript环境中正确使用它, 首先从npm安装它
npm install --save jspdf
如果您使用的是SystemJS,请将其映射到配置文件
map: {
"jspdf": "node_modules/jspdf/dist/jspdf.min.js"
}
安装定义包:(如果没有安装)
npm install typings --global
安装定义文件:
typings install dt~jspdf --global --save
最后,将其导入component.ts文件
import jsPDF from 'jspdf'
...
let doc = new jsPDF();
doc.text(20,20,'Hello world');
doc.save('Test.pdf');
...
答案 1 :(得分:12)
作为回应
此链接是导入jsPDF内容所必需的
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script> // to use jsPDF for registring pdf file
然后在你的component.ts
你这样做
declare let jsPDF;
@Component({
template: `
<button
(click)="download()">download
</button>
`
})
export class DocSection {
constructor() {
}
public 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');
}
}
答案 2 :(得分:2)
不推荐使用AddHtml方法:
来源: plugins / addhtml.js,第12行 推荐使用: 这正在被支持向量的API取代。 see here
将HTML元素呈现给添加到PDF
的画布对象此功能需要html2canvas 或rasterizeHTML
答案 3 :(得分:1)
要在Angular2应用程序(使用Typescript)中使用外部JavaScript库(例如jsPDF),您将需要这些javascript库的类型定义文件。这些文件提供类型信息(如String
,Number
,boolean
等)到typescript以获取编译时类型检查的帮助。 (因为javascript是松散的类型)
有关d.ts文件的另一种解释可以找到here。
您可以下载名为typings
的npm包,这将有助于加快流程。 Here's关于如何使用它的简短指南。安装打字后,您可以运行:
npm run -- typings install dt~jspdf --global --save
获取您可以在项目中使用的打字文件。