在Angular 2中生成PDF

5

我又来问一个关于Angular 2的问题。

我们正在尝试从HTML源文件生成PDF文件。我搜索了很久,试图找到jsPdf或makePdf库的Angular 2包装器,但是我找不到任何东西。我是否遗漏了什么?有没有纯JavaScript的方法,这是一个好的实践方式吗?希望你们能帮忙。

先行致谢。

Francois

3个回答

2
我曾经也在寻找同样的东西,几周前。我决定在服务器端(我的情况下是Node.js)生成它。然而,你可以像你提到的那样使用jsPDF在客户端生成它。
不需要包装器,只需包含脚本,然后通过window对象访问jsPDF即可。尽管使用包装器会更容易测试。
我不记得确切的内容,但我认为应该是这样的:
var doc = new window.jsPDF();

正是我想听到的!谢谢你的回答!我们将尝试使用 JavaScript,因为不幸的是我们不能使用 Node.js。我们唯一的其他解决方案是使用我们的 Java 后端生成 PDF。 - UberSwyser
@UberSwyser 你应该看一下JasperReports,它可以在Java中生成PDF文件:http://community.jaspersoft.com/project/jasperreports-library - Stefan Svrkota
你能否详细说明一下 window 对象? - UberSwyser
你想知道什么?你可以使用console.log(window)查看窗口中已经有什么,以及它是否包含jsPDF。 - stijn.aerts
那个完美地运行了!因此,通过使用window对象,我们能够访问jsPdf API并使用所有所需的函数!感谢您的帮助! - UberSwyser
1
我遇到了错误: 在我的ts文件中,类型“Window”上不存在属性“jsPDF”。 - GsMalhotra

1

PDF是一种复杂的文件格式,可能有一些使用JS构建的PDF解析器/生成器,但它们会受到限制并且速度较慢,你最好在服务器端处理。


感谢回复!我们唯一的选择是使用我们的Java后端,但由于时间限制,我们正尝试在客户端完成它。所有字段绑定数据已经在客户端,这使得事情变得更加容易。 - UberSwyser

0

HTML 代码:

  <button type="button" (click)="downloadPdf()" 
          class="button">download</button>

Component.ts:

  downloadPdf(){
  this.authService.downloadPdf().subscribe(data => {
  this.partnerDetails = data
  } ); }

routes.js:

router.get('/downloadPdf',partnerCntrl.downloadPdf);

partnercntrl:

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的HTML文件保存在变量html中,使用fs.readFileSync('YOUR HTML FILE PATH')进行读取。然后,你可以通过pdf.create(html, options).toFile('YOUR PDF FILE PATH TO BE SAVED', function(err, res)来指定生成的PDF文件的保存路径。如果出现错误,会返回err信息。 - Srikanth Reddy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接