我成功发送了一个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标准。