迭代数据并使用PDFKit生成页面

时间:2016-02-28 18:37:20

标签: javascript node.js pdf-generation pdfkit

我想使用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?

1 个答案:

答案 0 :(得分:0)

在您的代码中 while (Math.Abs(Top - SettingsHelper.Instance.Settings.WindowTop) > 0.1) { Top = SettingsHelper.Instance.Settings.WindowTop; } 以异步方式运行。这意味着您要在Project.find().exec(...)的调用完成之前创建PDF文档并保存。

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

exec()