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?当然,一旦可以从命令行转换,您也可以使用您选择的编程语言进行转换。
答案 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页,则在链接的答案中建议的正文边距将起作用。如果不是,则需要使用其他方法。例如,对于多个页面,您可以在左侧和右侧添加正文填充,然后将每个页面的内容包装在带有顶部和底部边距的标记中。