问题描述
我正在尝试从Node.js应用程序将PDF文件写入光盘。我可以创建文件,但是当我打开它时,它是空白的。它的大小不是0,因此显然正在向其中写入数据,但是我需要弄清楚如何查看打开时期望看到的数据。
PDF的数据来自第三方HTML-to-PDF转换API。在返回的响应中,我在data属性中看到了这一点:
response.data = '%PDF-1.4\n' +
'1 0 obj\n' +
'<<\n' +
'/Title (��)\n' +
'/Creator (��)\n' +
'/Producer (��\x00Q\x00t\x00 \x004\x00.\x008\x00.\x006)\n' +
'/CreationDate (D:20201109233748Z)\n' +
'>>\n' +
'endobj\n' +
'3 0 obj\n' +
'<<\n' +
'/Type /ExtGState\n' +
...
...
...
'startxref\n' +
'16917\n' +
'%%EOF\n'
然后我将其写入光盘:
fs.writeFile('./letter.pdf',res.data,(err) => {
if (err) {
console.log('Failed to save file; err=',err);
return null;
}
console.log('successfully saved file');
});
但是当我打开它时,它是空白文档。
到目前为止,我已经从两家提供商那里获得了这些数据:
...而且我也遇到了同样的问题。我认为这是指我取回的数据相当标准且没有损坏,在将其保存到磁盘之前,由我决定是否对其进行格式化和按摩。
解决方法
确保将其视为二进制文件。
fs.writeFile('result.pdf',binary_file,"binary",function () {})
如果您希望使用base64字符串或URL,请查看https://docamatic.com。