【问题标题】:Iterating through data and generate pages with PDFKit使用 PDFKit 遍历数据并生成页面
【发布时间】:2016-02-28 18:37:19
【问题描述】:

我想使用 for 循环在 pdfkit 中生成页面。在我的应用程序中,我创建了一个根据请求加载的新模块(所有这些工作正常,我可以创建一个没有循环的 pdf)。使用循环 pdfkit 创建一个 pdf,但是这个被破坏了。

模块代码:

module.exports = function () {

var Project = require('./models/projects');
var PDFDocument = require('pdfkit');
var doc = new PDFDocument;

doc.fontSize(25);
doc.text('Portfolio');

Project
    .find()
    .exec(function (err, projects) {
      if (err) {
          console.log(err);
      } else {
        projects.forEach(function (project) {

            var project_customer = project.customer;

            doc.addPage();
            doc.text('project_customer');

        });
      }
    });

doc.addPage();
doc.text('project_customer');

doc.save();

    doc.write('./output.pdf');

}

有没有办法让我得到一个没有损坏的pdf?

【问题讨论】:

    标签: javascript node.js pdf-generation pdfkit


    【解决方案1】:

    在您的代码中Project.find().exec(...) 异步运行。这意味着您正在创建 PDF 文档并在对 Project.find().exec(...) 的调用完成之前进行保存。

    我建议将 PDF 代码移动到包含在 exec() 中的回调中,如下所示:

    module.exports = function () {
    
        var Project = require('./models/projects');
        var PDFDocument = require('pdfkit');
    
        Project
          .find()
          .exec(function (err, projects) {
            if (err) return console.log(err);
    
            var doc = new PDFDocument;
            doc.fontSize(25);
            doc.text('Portfolio');
    
            projects.forEach(function (project) {
    
              var project_customer = project.customer;
    
              doc.addPage();
              doc.text('project_customer');
            });
    
            doc.addPage();
            doc.text('project_customer');
    
            doc.save();
    
            doc.write('./output.pdf');
    
          });
    }
    

    【讨论】:

    • 天哪,你是对的。谢谢,我忘记了代码是异步运行的。现在它工作正常。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多