我正在使用 Express 和 Node.js 开发一个 Web 应用程序。api
路由器当前有一个 GET 方法来generatePDF
生成带有 PDFKit 库的 PDF。
'use strict';
var express = require('express');
var router = express.Router();
const PDFDocument = require('pdfkit');
router.get('/generatePDF', async function(req, res, next) {
var text = req.params.text;
var myDoc = new PDFDocument({bufferPages: true});
let buffers = [];
myDoc.on('data', buffers.push.bind(buffers));
myDoc.on('end', () => {
let pdfData = Buffer.concat(buffers);
res.writeHead(200, {
'Content-Length': Buffer.byteLength(pdfData),
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=report.pdf'
}).end(pdfData);
});
const lorem = text;
myDoc.fontSize(8);
myDoc.text(`This text is left aligned. ${lorem}`, {
align: 'left'
});
myDoc.moveDown();
myDoc.text(`This text is centered. ${lorem}`, {
align: 'center'
});
myDoc.moveDown();
myDoc.text(`This text is right aligned. ${lorem}`, {
align: 'right'
});
myDoc.moveDown();
myDoc.text(`This text is justified. ${lorem}`, {
align: 'justify'
});
myDoc.end();
});
随着 Web 应用程序的增长,从可重用性的角度来看,将业务逻辑与控制器(路由器)混合并不是最佳实践。我是 PDFKit 的新手,想知道如何将 PDFKit 部分分离为单独的 Javascript PDFGenerator.js
,并通过包括以下内容使其由路由器调用:
const PDFGenerator = require('../PDFGenerator');