如何将现代HTML转换为PDF

时间:2018-02-03 21:46:51

标签: html css google-chrome pdf

2016年,从命令行将HTML文件转换为PDF的最佳方法是使用wkhtmltopdf。不幸的是,这似乎不再是真正的维护。它不支持很多像flexbox这样的东西。

可以使用无头铬/铬来做到这一点:

chrome --headless --print-to-pdf="path/to/pdf" https://your_url

但没有选项,如页边距,纸张类型,页眉/页脚控制,屏幕尺寸等。

似乎没有计划将这些添加到无头chrome中作为命令行选项(需要使用开发工具界面): https://bugs.chromium.org/p/chromium/issues/detail?id=603559#c89

如何从命令行将HTML文件转换为PDF,从而控制文档的打印方式(边距等,从上面开始),并支持现代的html / css?当然,一旦可以从命令行转换,您也可以使用您选择的编程语言进行转换。

2 个答案:

答案 0 :(得分:3)

这是一个命令行工具,您可以使用它将HTML页面转换为PDF,就像在chrome中一样。安装完成后,您可以使用任何您想要的编程语言(Python,Java,PHP等)从HTML网页或文档自动生成PDF。所有的依赖关系应该在未来很好地维护,所以它不应该像wkhtmltopdf那样难以维护的问题。

网址:

https://www.npmjs.com/package/chromehtml2pdf

https://github.com/dataverity/chromehtml2pdf

要安装它,您需要npm,并输入:

npm install chromehtml2pdf

或使其全局可供系统上的所有用户使用

npm install -g chromehtml2pdf

命令行用法:

chromehtml2pdf --out=file.pdf --landscape=1 https://www.npmjs.com/package/chromehtml2pdf

要获得帮助(查看所有可能的选项),请键入:

chromehtml2pdf --help

随意在github上发出拉取请求。

答案 1 :(得分:0)

如果您只想摆脱Chrome的默认页眉/页脚,并且控制了所涉及的页面,则可以使用CSS进行操作,而不必使用比简单的命令行调用更复杂的操作。

@media print {
  @page { margin: 0; }
}

当然,您可能确实希望页面上有页边距,因此您需要伪造这些页边距。这样做的复杂性取决于要发送给PDF的页面数。如果您要发射1页,则在链接的答案中建议的正文边距将起作用。如果不是,则需要使用其他方法。例如,对于多个页面,您可以在左侧和右侧添加正文填充,然后将每个页面的内容包装在带有顶部和底部边距的标记中。

https://stackoverflow.com/a/15150779/176877