节点缓冲区无法正确下载文件?

时间:2018-12-08 08:25:25

标签: node.js ajax express

我成功发送了一个get请求,该请求在服务器上生成了pdf文件,现在我想将其发送回客户端并在其浏览器中下载。我正在使用的npm pdf生成库称为html-pdf,并具有以下选项:

pdf.create(html).toFile([filepath, ]function(err, res){
  console.log(res.filename);
});

pdf.create('<h1>Hi</h1>').toBuffer(function(err, buffer){
  console.log('This is a buffer:', Buffer.isBuffer(buffer));
});

当我使用toFile选项时,将正确生成文件,但是,当我使用toBuffer选项并将其发送回用户时,结果pdf为空白。

我通过如下的ajax处理程序将缓冲区发送给用户:

module.exports = function(req, res) {
    pdf.create(html).toBuffer(function(err, buffer){
        res.setHeader('Content-Disposition', 'attachment; filename=panda.pdf');
        res.setHeader('Content-Type', 'application/pdf');
        res.send(buffer)
    });
};

在这里在客户端上收到的

$.get('generatePdf', function(data, status) {
    const url = window.URL.createObjectURL(new Blob([data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'file.pdf');
    document.body.appendChild(link);
    link.click();
})

由于某种原因,尽管下载的pdf为空白。有人知道我可能做错了吗?

根据此online pdf validator,我的下载文件已损坏,并出现以下错误:

  

结果文档不符合PDF / A。详细信息验证文件   符合级别pdf1.4的“文件(8).pdf”

     

找不到'xref'关键字或外部参照表格式错误。的   文件尾部字典缺失或无效。的“长度”键   流对象错误。 Flate流中的错误:数据错误。的   文件不符合要求的标准。档案格式   (标题,尾部,对象,外部参照,流)已损坏。文件   不符合PDF 1.4标准。

0 个答案:

没有答案