Meteor:使用 pdfKit 和 FlowRouter 动态生成 pdf
Meteor: Dynamic pdf generation with pdfKit and FlowRouter
我在我的 meteor 应用程序上使用 pdfKit 和 FlowRouter。我想生成一个 pdf 文件而不将其保存在服务器上。在文档中有一个例子:
Router.route('/getPDF', function() {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
this.response.writeHead(200, {
'Content-type': 'application/pdf',
'Content-Disposition': "attachment; filename=test.pdf"
});
this.response.end( doc.outputSync() );
}, {where: 'server'});
但这是针对 Iron Router 的使用。因为我正在使用 FlowRouter,所以我不知道如何 display/download 将 pdf 直接发送给用户而不将文件保存在服务器上。
使用来自 meteorhacks picker 的服务器端路由器。然后是
的内容
Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
res.end(doc.outputSync());
});
更新:现在 outputSync
已弃用,请使用:
Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
doc.pipe(res);
doc.end();
});
现在 outputSync() 已被删除,具体操作方法如下:
Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
doc.pipe(res);
doc.end(res);
});
我在我的 meteor 应用程序上使用 pdfKit 和 FlowRouter。我想生成一个 pdf 文件而不将其保存在服务器上。在文档中有一个例子:
Router.route('/getPDF', function() {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
this.response.writeHead(200, {
'Content-type': 'application/pdf',
'Content-Disposition': "attachment; filename=test.pdf"
});
this.response.end( doc.outputSync() );
}, {where: 'server'});
但这是针对 Iron Router 的使用。因为我正在使用 FlowRouter,所以我不知道如何 display/download 将 pdf 直接发送给用户而不将文件保存在服务器上。
使用来自 meteorhacks picker 的服务器端路由器。然后是
的内容Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
res.end(doc.outputSync());
});
更新:现在 outputSync
已弃用,请使用:
Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
doc.pipe(res);
doc.end();
});
现在 outputSync() 已被删除,具体操作方法如下:
Picker.route('/generate/getPdf', function(params, req, res, next) {
var doc = new PDFDocument({size: 'A4', margin: 50});
doc.fontSize(12);
doc.text('PDFKit is simple', 10, 30, {align: 'center', width: 200});
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Content-Disposition': 'attachment; filename=test.pdf'
});
doc.pipe(res);
doc.end(res);
});