使用特定配置打开木偶程序(下载PDF而不是PDF查看器) [英] Open Puppeteer with specific configuration (download PDF instead of PDF viewer)

查看:19
本文介绍了使用特定配置打开木偶程序(下载PDF而不是PDF查看器)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用特定配置打开Chromium。

我正在查找配置to activate the following option

设置=>站点设置=>权限=>PDF文档=>"下载PDF文件,而不是在Chrome中自动打开"

我搜索了this command line switch page上的标记,但处理pdf的唯一参数是--print-to-pdf,这不符合我的需要。

您有什么想法吗?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆