如何将缓冲区转换为 pdf/docx

时间:2021-06-02 19:41:40

标签: javascript node.js buffer puppeteer

        await newPage.setRequestInterception(true);
        const xRequest = await new Promise(resolve => {
            newPage.on('request', interceptedRequest => {
                interceptedRequest.abort();     //stop intercepting requests
                resolve(interceptedRequest);
            });
        });

        const options = {
            encoding: null,
            method: xRequest._method,
            uri: xRequest._url,
            body: xRequest._postData,
            headers: xRequest._headers
        }
        
        const cookies = await newPage.cookies();
        options.headers.Cookie = cookies.map(ck => ck.name + '=' + ck.value).join(';');
        
        const res = await request(options);

我正在使用 puppeteer 并尝试下载一些 pdf/docx 并将 res 作为缓冲区。如何从缓冲区 (res) 检查文件类型并将其转换为该特定文件类型。

1 个答案:

答案 0 :(得分:0)

如果您手中有缓冲区,则不需要“转换”它。 例如,您可以将其写入文件,例如,您将能够使用资源管理器打开它。

fs.writeFile('filename.pdf', buffer);

此外,您的问题的解决方案已经存在于此处:Detecting file type from buffer in node js? 在发布之前,请花点时间找到有关堆栈溢出的现有解决方案。

如果第一个字节是 [0x25, 0x50, 0x44, 0x46],则缓冲区包含 pdf 你可以像这样简单地测试它:

var isPdf = (buffer[0] == 0x25 && buffer[1] == 0x50 && buffer[2] == 0x44 && buffer[3] == 0x46);