如何下载在 puppeteer 的新标签页中打开的 pdf?

GVB*_*GVB 8 javascript node.js web-scraping puppeteer

我有一个带按钮的页面。当我单击该按钮时,它会在新选项卡中打开一个 PDF。

如何使用 puppeteer 将 PDF 作为文件下载?

也许我可以用新选项卡中的缓冲区编写一个文件。但我不确定如何。

Mal*_*jun 5

使用 puppeteer-extra 节点模块。

傀儡师-额外

const puppeteer = require('puppeteer-extra');
...
...
puppeteer.use(require('puppeteer-extra-plugin-user-preferences')({userPrefs: {
   download: {
     prompt_for_download: false,
     open_pdf_in_system_reader: true
  },
  plugins: {
    always_open_pdf_externally: true // this should do the trick
  }
}}))

const browser = await puppeteer.launch();

browser.on('targetcreated', async (target) => {
   console.log('targetcreated');
   if (target.type() !== 'page') {
     return;
   }
   try {
     const pageList = await browser.pages();
     pageList.forEach((page) => {
       page._client.send('Page.setDownloadBehavior', {
         behavior: 'allow',
         downloadPath: './pdfDownloaded/',
       });
     });
   } catch (e) {
     console.log("targetcreated", e);
   }
});
...
...
Run Code Online (Sandbox Code Playgroud)

但是当我设置always_open_pdf_externally: truechrome 时崩溃了。

尝试一下它是否适合您,如果您发现任何问题,请发回答案