【问题标题】:PDFKit unable to write a file to streamPDFKit 无法将文件写入流式传输
【发布时间】:2016-11-14 17:44:13
【问题描述】:

我正在尝试执行以下操作,我有一个 GET REST 请求访问运行 receipt 的端点。我从下面没有收到任何错误,但是当我检查返回的 blob 但没有显示我添加的文本时。

var PDFDocument = require('pdfkit');

// User Receipt
exports.receipt = function(req, res) {
    var guid = req.params.guid;
    console.log(guid);

    var doc = new PDFDocument();
    var stream = doc.pipe( res );

    doc.moveTo(300, 75)
       .lineTo(373, 301)
       .lineTo(181, 161)
       .lineTo(419, 161)
       .lineTo(227, 301)
       .fill('red', 'even-odd');  

    var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  

    doc.y = 320;
    doc.fillColor('black')
    doc.text(loremIpsum, {
       paragraphGap: 10,
       indent: 20,
       align: 'justify',
       columns: 2
    });  

    doc.end();
    res.setHeader('Content-Type', 'application/pdf');

    stream.on('finish', function() {
        stream.pipe(res);
    });
};

客户端我有以下代码:

var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$window.open(fileURL);

但是页面返回Failed to load PDF document

【问题讨论】:

    标签: node.js pdfkit node-pdfkit


    【解决方案1】:

    您应该在管道之前设置标题。此外,您应该只向res 发送一次。

    var PDFDocument = require('pdfkit');
    
    // User Receipt
    exports.receipt = function(req, res) {
        var guid = req.params.guid;
        console.log(guid);
    
        var doc = new PDFDocument();
    
        doc.moveTo(300, 75)
           .lineTo(373, 301)
           .lineTo(181, 161)
           .lineTo(419, 161)
           .lineTo(227, 301)
           .fill('red', 'even-odd');  
    
        var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  
    
        doc.y = 320;
        doc.fillColor('black')
        doc.text(loremIpsum, {
           paragraphGap: 10,
           indent: 20,
           align: 'justify',
           columns: 2
        });
        doc.end();
    
        res.setHeader('Content-Type', 'application/pdf');
        return doc.pipe(res);
    };
    

    【讨论】:

    • 我的 PDF 文件可以正常打开且没有错误,但现在只显示 [object object]
    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多