我选择哪一种无头浏览?

Jey*_*ash 2 pdf-generation node.js phantomjs google-chrome-headless puppeteer

我们在前几天使用 phantomjs 用服务器端王子工具生成 pdf。现在我们喜欢把无头浏览器从 phantomjs 换成另一个。

我研究了哪个快速渲染 phantomjs 和 puppeteer。在我的情况下,报告应用程序生成 PDF,只有我使用 puppeteer 和 phantomjs 对其进行测试。phantomjs 与 puppeteer 相比,可以快速处理 HTML。

然后我学习了 google-chrome-headless 选项来生成 PDF。它看起来像一个 Chrome 浏览器 GUI 应用程序的内置模块。我正在使用 nodejs 应用程序。我在命令行中使用以下命令

chrome --headless --disable-gpu --print-to-pdf <src_url>
Run Code Online (Sandbox Code Playgroud)

我注意到 --disable-gpu 选项,其他工具没有。

  • 此选项与其他两个无头浏览器工具(phantomjs、puppeteer)有何不同?
  • 我可以使用哪个工具生成 pdf?

Md.*_*her 5

以下是这些工具的作用,

  • phantomJS是一个可编写脚本的 Headless WebKit。类似于chrome浏览器。它已弃用,项目已存档。
  • Chromium:Chromium 是 Google 的开源网络浏览器项目。它本身就是一个功能齐全的浏览器,并为 Google Chrome 浏览器提供绝大多数代码。
  • Chromium-headless:无头 Chrome 在 Chrome 59 中提供。这是在无头环境中运行 Chrome 浏览器的一种方式。本质上,在没有 chrome 的情况下运行 Chrome!它将 Chromium 和 Blink 渲染引擎提供的所有现代 Web 平台功能引入命令行。
  • Puppeteer:Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chrome 或 Chromium。Puppeteer 默认无头运行,但可以配置为运行完整(非无头)Chrome 或 Chromium。

您可以使用 puppeteer 控制铬和铬无头的实例。当然,它允许您提供参数并使用该 API 生成 PDF。

您可以使用 Chrome CLI 和 Puppeteer 控制相同的 API。

以下是如何使用无头铬生成网站的 pdf 文件。

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
Run Code Online (Sandbox Code Playgroud)

使用 puppeteer 也是同样的事情,

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.chromestatus.com/');
  await page.pdf({path: 'chromestatus.pdf', format: 'A4'});
  await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)