gpt4 book ai didi

javascript - Puppeteer - 如何获取当前页面(应用程序/pdf)作为缓冲区或文件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:40 24 4
gpt4 key购买 nike

使用 Puppeteer ( https://github.com/GoogleChrome/puppeteer ),我有一个application/pdf页面。使用 headless: false 时,页面是通过 Chromium PDF 查看器加载的,但我想使用 headless。如何下载原始 .pdf 文件或将其用作其他库的 blob,例如 (pdf-parse https://www.npmjs.com/package/pdf-parse )?

最佳答案

由于 Puppeteer 目前不支持通过 page.goto() 在 headless 模式下导航到 PDF 文档由于upstream issue ,您可以使用page.setRequestInterception()启用请求拦截,然后就可以监听 'request'事件并在使用请求客户端获取PDF缓冲区之前检测资源是否为PDF。

获取PDF缓冲区后,可以使用request.abort()要中止原始 Puppeteer 请求,或者如果请求不是 PDF,您可以使用 request.continue()正常继续请求。

这是一个完整的工作示例:

'use strict';

const puppeteer = require('puppeteer');
const request_client = require('request-promise-native');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();

await page.setRequestInterception(true);

page.on('request', request => {
if (request.url().endsWith('.pdf')) {
request_client({
uri: request.url(),
encoding: null,
headers: {
'Content-type': 'applcation/pdf',
},
}).then(response => {
console.log(response); // PDF Buffer
request.abort();
});
} else {
request.continue();
}
});

await page.goto('https://example.com/hello-world.pdf').catch(error => {});

await browser.close();
})();

关于javascript - Puppeteer - 如何获取当前页面(应用程序/pdf)作为缓冲区或文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com