最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

ExpressJS和PDFKit

IT培训 admin 10浏览 0评论

ExpressJS和PDFKit

在我的api路由器中,有一个名为generatePDF的功能,旨在使用PDFKit模块在内存中生成PDF文件并发送给客户端。

api.js中:

var express = require('express');
var router = express.Router();

const PDFDocument = require('pdfkit');

router.get('/generatePDF', async function(req, res, next) {
    var myDoc = new PDFDocument({bufferPages: true});
    myDoc.pipe(res);
    myDoc.font('Times-Roman')
         .fontSize(12)
         .text(`this is a test text`);
    myDoc.end();
    res.writeHead(200, {
        'Content-Type': 'application/pdf',
        'Content-disposition': 'attachment;filename=test.pdf',
        'Content-Length': 1111
    });
    res.send( myDoc.toString('base64'));
});

module.exports = router;

这不起作用。错误消息是(node:11444) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我该如何解决该问题并使它正常工作?

此外,一个相关的问题是我如何将PDF生成的业务逻辑与路由器分开并进行链接?

回答如下:

假定正文是您要发送的内容,请像这样使用它:

res.writeHead(200, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=test.pdf',})
.end(body);

ExpressJS和PDFKit

在我的api路由器中,有一个名为generatePDF的功能,旨在使用PDFKit模块在内存中生成PDF文件并发送给客户端。

api.js中:

var express = require('express');
var router = express.Router();

const PDFDocument = require('pdfkit');

router.get('/generatePDF', async function(req, res, next) {
    var myDoc = new PDFDocument({bufferPages: true});
    myDoc.pipe(res);
    myDoc.font('Times-Roman')
         .fontSize(12)
         .text(`this is a test text`);
    myDoc.end();
    res.writeHead(200, {
        'Content-Type': 'application/pdf',
        'Content-disposition': 'attachment;filename=test.pdf',
        'Content-Length': 1111
    });
    res.send( myDoc.toString('base64'));
});

module.exports = router;

这不起作用。错误消息是(node:11444) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我该如何解决该问题并使它正常工作?

此外,一个相关的问题是我如何将PDF生成的业务逻辑与路由器分开并进行链接?

回答如下:

假定正文是您要发送的内容,请像这样使用它:

res.writeHead(200, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/pdf',
'Content-disposition': 'attachment;filename=test.pdf',})
.end(body);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论