使用流输出pdf

output pdf using stream

如何使用 expressjs 输出 pdf:

var fs = require('fs');
var PdfPrinter = require('pdfmake/src/printer');

app.get('/', function (req, res) {
    var printer = new PdfPrinter();

    var first = 'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines';

    var dd = {
        content: [
            first,
            'Another paragraph'
        ]
    };
    var pdfDoc = printer.createPdfKitDocument(dd);
    pdfDoc.pipe(fs.createWriteStream('basics.pdf')).on('finish',function(){
        //success

    });
    pdfDoc.end();
});

您可以将输出通过管道传输到 res(确保您设置了正确的 Content-Type):

app.get('/', function (req, res) {
  var printer = new PdfPrinter();
  var first   = 'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines';
  var dd      = {
    content: [
      first,
      'Another paragraph'
    ]
  };

  // Make sure the browser knows this is a PDF.
  res.set('content-type', 'application/pdf');

  // Create the PDF and pipe it to the response object.
  var pdfDoc = printer.createPdfKitDocument(dd);
  pdfDoc.pipe(res);
  pdfDoc.end();
});

(虽然我不能说它为我生成了清晰的 PDF,但是当 运行 独立 任何 pdfmake 例子)