在无头打印到 pdf 中禁用 Chrome 的默认页眉和页脚

d0n*_*key 18 html css pdf google-chrome

我有一个多页 HTML 文档,我想从命令行使用无头 Google Chrome / Chromium 将其导出为 PDF:chrome --headless --print-to-pdf [...]. 问题在于,Chrome 在“打印”时向页面添加了自动生成的页眉和页脚。其他人建议@page {margin: 0}在我的 CSS 中使用,但正如其他一些人所说,由于某种神奇的原因,这只适用于几页,因此在我的示例的最后一页有一个页脚。

我知道有一个NPM 包支持无头导出,但这种导出比无头 Chrome 本身多花费大约 30% 的时间,并且需要在我公司的服务器上安装和设置 NPM 和包。

如果有人知道通过 CSS 或某些设置在无头 PDF 导出中隐藏 Google Chrome 的默认页眉/页脚的任何方法,请告诉我。


顺便说一句,由于我没有想出其他解决方案,所以我使用了NPM 包。到目前为止,它一直运行良好且可靠,在我的测试中只花费了大约 30% 的时间,所以请记住这一点。

小智 23

最新的 Google Chrome Canary 版本中有一个可用的选项。使用该--print-to-pdf-no-header选项。

canary --headless --disable-gpu --run-all-compositor-stages-before-draw --print-to-pdf-no-header --print-to-pdf=example.pdf http://example.com
Run Code Online (Sandbox Code Playgroud)

参考:源代码

  • 使用 Google Chrome 89.0.4379.0 canary,我可以使用 `--headless --disable-gpu --print-to-pdf=output1.pdf --print-to-pdf-no-header` 让它工作。 (2认同)
  • 我知道 Chromium 87 中提供了 `--print-to-pdf-no-header` (2认同)

小智 5

也许这个线程可以帮助你。基本上你需要添加CSS如下

@media print {
  @page { margin: 0; }
  body { margin: 1.6cm; }
}
Run Code Online (Sandbox Code Playgroud)

和“ --no-margins ”参数

  • 当然。只是为了澄清:设置 `margin: 0` 确实适用于 1 或 2 页,但是当我尝试使用 20 页或其他内容时,最后一页上的页脚是可见的。 (6认同)
  • 我还可以确认 @d0n.key 在页脚剩余的情况下所经历的确切行为。 (3认同)