使用meteor-wkhtmltopdf下载页面上元素的PDF

我试图触发在DOM中呈现的D3生成的元素的wkhtmltopdf -ization服务器端,然后在响应中将最终的PDF传递回客户端。

简而言之,这就是我正在做的事情:

 Meteor.methods({ downloadPdf: function(data, node) { var filename = data.slug + "-" + data.size, headers = { 'Content-Type': 'application/pdf', 'Content-Disposition': "attachment; filename=" + filename + ".pdf" }; this.response.writeHead(200, headers); var r = wkhtmltopdf(node).pipe(this.response); return r; } }); 

我在客户端上打电话给他:

 Template.getPDF.events({ 'click .pdf-export-button': function(e) { var data = Router.current() && Router.current().data(); if (data) { var node = d3.select(".pdf-export-preview").node().innerHTML; Meteor.call("downloadPdf", data, node, function(err, result) { // response goes here? }); } } }); 

问题是,上面的代码在Meteor.callcallback中返回一个500错误,并且我的terminal告诉我这是: Exception while invoking method 'downloadPdf' TypeError: Cannot call method 'writeHead' of undefined 。 似乎表明,反应还没有准备好,或类似的东西。 不太确定如何解决这个问题。 任何帮助将不胜感激!

PS我发现的一个解决scheme是使用铁路路由器来触发PDF下载 ,但是这是一个问题,因为我需要能够将渲染的D3 SVG传递给wkhtmltopdf(以及一些PDF的configuration)。