【问题标题】:Puppeteer download embedded PDF filePuppeteer 下载嵌入式 PDF 文件
【发布时间】:2022-10-15 16:45:38
【问题描述】:

我正在访问一个包含 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。

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

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

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

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

谢谢。

【问题讨论】:

    标签: google-chrome-devtools puppeteer chromium


    【解决方案1】:

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

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

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

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

    然后在 puppeteer 上,我使用以下标志启动了 chromium:

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

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

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

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

    这适用于 puppeteer 17 和 18。我也在 14,15 和 16 版本中对其进行了测试,但没有运气。

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

    谢谢

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2016-02-04
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多