使用PDFkit和Meteor时遇到麻烦

时间:2015-05-31 00:35:42

标签: pdf meteor pdfkit

我正在使用PDFkit Meteor并收到错误

  

对象没有方法' writeSync'

谁能告诉我哪个包包含这个方法?我错过了什么吗?

我的套餐包括:

  • meteorhacks:async
  • meteorhacks:npm
  • npm-container
  • cfs:filesystem
  • cfs:standard-packages
  • pascoual:pdfkit

该文档包含meteor添加pascoual:pdfkit,并建议添加2个纤维方法writeSyncoutputSync,但找不到它们。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

使用2个替代方案在服务器端使用PDFKit:

  1. Rounting:lib / router.js

    Router.route(' / createPDF /:_ ParamId',function(){     var paramId = this.params._ParamId;     if(!paramId)return;

    var doc = new PDFDocument({
        size: 'A4',
        margins: {
            top: 50,
            bottom: 0,
            left: 50,
            right: 50,
        }
    });
    
    doc.image(process.env.PWD + '/public/sample1.jpg', 0, 30);
    
    this.response.writeHead(200, {
        'Content-type': 'application/pdf',
        'Content-Disposition': 'attachment; filename=somename.pdf'
    });
    this.response.end(doc.outputSync());}, { where: 'server' });
    
  2. 并且,使用以下方式从客户端致电:

    Router.go('/createPDF/' + someParamId);
    
    1. 调用Meteor方法

      Meteor.call(' createPDF',paramId);

    2. 更改PDF构建方法

      Meteor.methods({
          createPDF: function(paramId) {
      
      
              if (!paramId) return;
      
              var doc = new PDFDocument({
                  size: 'A4',
                  margins: {
                      top: 50,
                      bottom: 0,
                      left: 50,
                      right: 50,
                  }
              });
      
              doc.image(process.env.PWD + '/public/img/sample1.jpg', 0, 30);
      
              ....
      
              doc.writeSync(process.env.PWD + '/public//pdf/' + pdfName + '.pdf');
          }
      });
      

      我只有一个麻烦,在我的blabla.meteor.com测试应用程序中无法运行,服务器无法使用doc.image找到图像(...)