Puppeteer 下载嵌入式 PDF 文件

Puppeteer download embedded PDF file

提问人:gothaf 提问时间:10/15/2022 更新时间:10/15/2022 访问量:867

问:

我正在访问一个页面,该页面包含pdf文件的链接。该链接将打开一个新选项卡,其内容如下所示:

<html>
  <head></head>
  <body style="height: 100%; width: 100%; overflow: hidden; margin:0px; background-color: rgb(38, 38, 38);">
    <embed name="B4133D167D3B030DC294D8CA8F6FC5FE" style="position:absolute; left: 0; top: 0;" width="100%" height="100%" src="about:blank" type="application/pdf" internalid="B4133D167D3B030DC294D8CA8F6FC5FE">
  </body>
</html>

Embedded是我想下载的pdf。

到目前为止,我提出的唯一解决方案是手动更改默认行为以下载 PDF,但每次重新启动浏览器时,它都会重置。另外,我无法在无头模式下测试此解决方案......chrome://settings/content/pdfDocuments

我尝试使用此列表中的标志启动 chromium,但没有运气。--print-to-pdf

有谁知道,如果 Puppeteer 可以以“下载 PDF”作为默认行为启动 chromium,而无需将其绑定到配置文件?

有谁知道是否有另一种解决方案让 Puppeteer 下载嵌入式 pdf?

谢谢。

Google-chrome-devtools 傀儡师 chromium

评论


答:

0赞 gothaf 10/15/2022 #1

我得到了一个解决方案,现在可以使用 chrome 配置文件完成这项工作。

我在浏览器中创建了一个新的配置文件。我将下载目录和 PDF 的默认行为设置为“下载 PDF”。

我在某处创建了一个新文件夹,供 chromium 用作其数据目录。

我将之前创建的名为“Profile 2”的配置文件文件夹粘贴到新创建的文件夹中。

然后在 puppeteer 上,我启动了带有以下标志的 chromium:

--user-data-dir=newly_created_folder --profile-directory=Profile 2

我必须同时设置两者,因为当 chromium 首次启动时,它会用自己的文件填充用户目录。

每次浏览器重新启动时,都必须覆盖位于“user-data-dir”foder 上的文件。我最终在每次执行之前删除了该文件。SingletonLockpuppeteer.launch(options)

为了在无头模式下工作,我设置了参数而不是 true。headless: 'chrome'

这适用于傀儡师 17 和 18。我也在版本 14、15 和 16 中测试了它,但没有运气。

不过,如果有人知道下载嵌入式 PDF 的更好解决方案,请分享。

谢谢