【发布时间】:2017-01-10 09:04:58
【问题描述】:
我又问了另一个 Angular 2 问题。
我们正在尝试从 html 源生成 PDF 文件。我搜索并搜索试图找到 jsPdf 或 makePdf 库的 Angular 2 包装器,但我找不到任何东西。有什么我想念的吗?是否有纯 JavaScript 方式,这是一种好的做法吗?希望大家帮忙。
提前致谢。
弗朗索瓦
【问题讨论】:
标签: pdf angular pdf-generation
我又问了另一个 Angular 2 问题。
我们正在尝试从 html 源生成 PDF 文件。我搜索并搜索试图找到 jsPdf 或 makePdf 库的 Angular 2 包装器,但我找不到任何东西。有什么我想念的吗?是否有纯 JavaScript 方式,这是一种好的做法吗?希望大家帮忙。
提前致谢。
弗朗索瓦
【问题讨论】:
标签: pdf angular pdf-generation
HTML 代码:
<button type="button" (click)="downloadPdf()"
class="button">download</button>
组件.ts:
downloadPdf(){
this.authService.downloadPdf().subscribe(data => {
this.partnerDetails = data
} ); }
routes.js:
router.get('/downloadPdf',partnerCntrl.downloadPdf);
合作伙伴:
module.exports.downloadPdf = function (req, res) {
var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };
pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res); // { filename: '/app/businesscard.pdf' }
});
【讨论】:
PDF 是一种复杂的文件格式,可能有一些用 js 构建的 pdf 解析器/生成器,但它们会受到限制且速度较慢,最好的办法是在服务器端做一些事情。
【讨论】:
几周前我也在寻找同样的东西。我决定在服务器端进行生成(在我的例子中是 Node.js)。但是,您可以使用 jsPDF 在客户端执行此操作,就像您提到的那样。
不需要包装器,只需包含脚本,然后通过 window 对象访问 jsPDF。 Wrapper 会让测试变得更容易。
我记不太清了,但我以为是这样的:
var doc = new window.jsPDF();
【讨论】: