使用特定配置打开木偶程序(下载PDF而不是PDF查看器) [英] Open Puppeteer with specific configuration (download PDF instead of PDF viewer)
本文介绍了使用特定配置打开木偶程序(下载PDF而不是PDF查看器)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要使用特定配置打开Chromium。
我正在查找配置to activate the following option:
设置=>站点设置=>权限=>PDF文档=>"下载PDF文件,而不是在Chrome中自动打开"
我搜索了this command line switch page上的标记,但处理pdf的唯一参数是--print-to-pdf
,这不符合我的需要。
您有什么想法吗?
没有可以传递到Puppeteer中强制下载推荐答案的选项。但是,您可以使用Chrome-DevTools-protocol添加content-disposition: attachment
响应头以强制下载。
您需要做什么的可视化流程:
我将在下面包含完整的示例代码。在下面的示例中,将以标题模式下载PDF文件和XML文件。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: null,
});
const page = await browser.newPage();
const client = await page.target().createCDPSession();
await client.send('Fetch.enable', {
patterns: [
{
urlPattern: '*',
requestStage: 'Response',
},
],
});
await client.on('Fetch.requestPaused', async (reqEvent) => {
const { requestId } = reqEvent;
let responseHeaders = reqEvent.responseHeaders || [];
let contentType = '';
for (let elements of responseHeaders) {
if (elements.name.toLowerCase() === 'content-type') {
contentType = elements.value;
}
}
if (contentType.endsWith('pdf') || contentType.endsWith('xml')) {
responseHeaders.push({
name: 'content-disposition',
value: 'attachment',
});
const responseObj = await client.send('Fetch.getResponseBody', {
requestId,
});
await client.send('Fetch.fulfillRequest', {
requestId,
responseCode: 200,
responseHeaders,
body: responseObj.body,
});
} else {
await client.send('Fetch.continueRequest', { requestId });
}
});
await page.goto('https://pdf-xml-download-test.vercel.app/');
await page.waitFor(100000);
await client.send('Fetch.disable');
await browser.close();
})();
有关更详细的说明,请参阅Git repo我已安装备注。它还包括playwright的示例代码。
这篇关于使用特定配置打开木偶程序(下载PDF而不是PDF查看器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文