【问题标题】:Generating pdf in Angular 2在Angular 2中生成pdf
【发布时间】:2017-01-10 09:04:58
【问题描述】:

我又问了另一个 Angular 2 问题。

我们正在尝试从 html 源生成 PDF 文件。我搜索并搜索试图找到 jsPdf 或 makePdf 库的 Angular 2 包装器,但我找不到任何东西。有什么我想念的吗?是否有纯 JavaScript 方式,这是一种好的做法吗?希望大家帮忙。

提前致谢。

弗朗索瓦

【问题讨论】:

    标签: pdf angular pdf-generation


    【解决方案1】:

    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' }
         });
    

    【讨论】:

    • 你可以在 var html = fs.readFileSync('YOUR HTML FILE PATH'') 中保留你想要转换为 pdf 的 html 文件,并且你可以在 pdf 中给出下载生成的 pdf 的路径.create(html, options).toFile('要保存的 PDF 文件路径', function(err, res) { if (err) return console.log(err);
    【解决方案2】:

    PDF 是一种复杂的文件格式,可能有一些用 js 构建的 pdf 解析器/生成器,但它们会受到限制且速度较慢,最好的办法是在服务器端做一些事情。

    【讨论】:

    • 感谢您的回复!我们唯一的选择是使用我们的 Java 后端,但由于时间限制,我们正尝试在客户端进行。字段绑定的所有数据都已经在客户端,这让事情变得更加容易。
    【解决方案3】:

    几周前我也在寻找同样的东西。我决定在服务器端进行生成(在我的例子中是 Node.js)。但是,您可以使用 jsPDF 在客户端执行此操作,就像您提到的那样。

    不需要包装器,只需包含脚本,然后通过 window 对象访问 jsPDF。 Wrapper 会让测试变得更容易。

    我记不太清了,但我以为是这样的:

    var doc = new window.jsPDF();
    

    【讨论】:

    • 正是我想听到的!谢谢你的回答!我们将尝试使用 javascript 路线,因为不幸的是我们不允许使用 nodejs。我们唯一的其他解决方案是使用 out java 后端生成 pdf。
    • @UberSwyser 你应该看看 JasperReports 在 Java 中生成 pdf 文件:community.jaspersoft.com/project/jasperreports-library
    • 您能否详细说明一下 window 对象?
    • 您想知道什么?您可以执行 console.log(window) 以查看窗口中的所有内容以及它是否包含 jsPDF。
    • 我收到错误:我的 ts 文件中的“Window”类型上不存在属性“jsPDF”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2018-07-28
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多