40

我再需要一次帮助。我正在尝试使用 chrome 的无头功能将页面打印为 pdf。但是,pdf 中存在页眉和页脚。我发现此选项已在 Devtools 中实现。

https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF

但是,我找不到如何在 CLI 中使用这些选项。也可以从 selenium 调用 Devtools 吗?

此外,我如何在开发工具中调用 Page.PrintToPDF。我试图在控制台中运行该命令。它显示页面未定义。

4

3 回答 3

24

将此 CSS 添加到您创建为 PDF 的页面中,以删除 Chrome Headless 实现的页眉和页脚。

CSS:

@media print {
  @page { margin: 0; }
  body { margin: 1.6cm; }
}

你应该像下面这样格式化你的命令来创建 PDF:

"C:\PATH\TO\CHROME\EXECUTABLE\FILE", "--headless","--disable-gpu","--print-to-pdf=" + directory path to where you want the file to go followed by the desired file name/fileName.pdf,"--no-margins", "the path to the file you want turned into a pdf"

示例 1:

C:\chrome-win/chrome --headless --disable-gpu --print-to-pdf=C:\user\fileName.pdf --no-margins C:\Projects\index.html

示例 2:

您还可以通过在命令行中导航到包含 Chrome 可执行文件的文件夹并运行以下命令来测试此功能:

chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
于 2017-12-05T21:37:02.090 回答
11

"/path/to/google-chrome": 这是谷歌浏览器的路径。

'--headless' :没有完整浏览器 UI 的无头环境中的 Chrome 浏览器

'--run-all-compositor-stages-before-draw':它防止在呈现所有数据之前创建 Pdf(在呈现所有数据之后将创建 pdf)。

'--virtual-time-budget = x:它延迟了 Pdf 的创建过程,这里 x 将是毫秒。

'--print-to-pdf':此标志创建给定 URL 的 pdf。

URL: 网页的网址。

PDF 页面格式(使用 CSS)添加这个(到 css 文件):

 @media print {
            @page { margin: 0mm 0mm 0mm 0mm;
            size:8in 9.5in;
            }
            }

上面的 CSS 代码对网页渲染没有影响,但仅对 PDF 中的页面格式有影响。

于 2018-11-30T06:57:34.613 回答
-3

是的,如果您想以 pdf 格式下载网页,则需要添加此媒体查询。参考媒体打印 CSS https://developer.mozilla.org/en-US/docs/Web/CSS/@media

页面 CSS https://developer.mozilla.org/en-US/docs/Web/CSS/@page

于 2021-11-17T16:50:59.667 回答