当我从Node.js中的PDF数据字符串保存PDF文件时,为什么我的PDF文件打开为空白

问题描述

我正在尝试从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