如何将现代HTML转换为PDF

如何将现代HTML转换为PDF,html,css,google-chrome,pdf,Html,Css,Google Chrome,Pdf,2016年,从命令行将HTML文件转换为PDF的最佳方式是使用wkhtmltopdf。不幸的是,这似乎不再是真正的维持。它不支持很多东西,比如flexbox 可以使用无头铬/铬来实现: chrome --headless --print-to-pdf="path/to/pdf" https://your_url chrome--无头--打印到pdf=“path/to/pdf”https://your_url 但它没有诸如页边距、纸张类型、页眉/页脚控制、屏幕大小等选项 似乎没有计划将这些作为命令

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

可以使用无头铬/铬来实现:

chrome --headless --print-to-pdf="path/to/pdf" https://your_url chrome--无头--打印到pdf=“path/to/pdf”https://your_url 但它没有诸如页边距、纸张类型、页眉/页脚控制、屏幕大小等选项

似乎没有计划将这些作为命令行选项添加到headless chrome中(需要使用开发工具界面):


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

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

网址:

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

npm install chromehtml2pdf
或者使系统上的所有用户都可以全局使用它

npm install -g chromehtml2pdf
命令行用法:

chromehtml2pdf --out=file.pdf --landscape=1 https://www.npmjs.com/package/chromehtml2pdf
要获得帮助(查看所有可能的选项),请键入:


您可以在github上自由地进行拉取请求。

如果您只想摆脱Chrome的默认页眉/页脚,并控制有问题的页面,那么您可以使用CSS来实现这一点,而不必使用比简单的命令行调用更复杂的东西

@media print {
  @page { margin: 0; }
}
当然,你可能确实想要在你的页面上留有空白,所以你需要伪造这些空白。这样做的复杂性取决于要发送到PDF的页面数量。如果您使用的是单页传呼机,则链接答案中建议的正文边距将起作用。如果没有,则需要使用其他方法。例如,对于多个页面,可以在左侧和右侧添加正文填充,然后将每个页面的内容包装在标记中,并在顶部和底部留有边距

Project可以做到这一点,还可以做得更多。包括操纵以及、、等

试一试

docker run --rm -p 3000:3000 thecodingmachine/gotenberg:6
范例

curl --request POST \
    --url http://localhost:3000/convert/url \
    --header 'Content-Type: multipart/form-data' \
    --form remoteURL=https://brave.com \
    --form marginTop=0 \
    --form marginBottom=0 \
    --form marginLeft=0 \
    --form marginRight=0 \
    -o result.pdf

-使用Google Chrome headless进行HTML和标记转换

未满足对等依赖webpack@3.6.0
与您的操作系统或体系结构不兼容:fsevents@1.2.4
在Ubuntu 18.04$chromehtml2pdf--help/home/miguelfg/.nvm/versions/node/v6.4.0/lib/node_modules/chromehtml2pdf/index.js:144上(async()=>{^SyntaxError:意外标记(…我已经更新了依赖项。你现在可以尝试一下;如果你仍然有问题,可以在github上报告。你好@juacala,我使用你的应用程序时遇到了单击以扩展内容的问题。你能就这个问题给我一些建议吗?非常感谢你的帮助!你似乎很了解Gotenberg。你知道它是否可以创建可填充表单输入,然后可以使用Adobe Reader填写和保存?@Prometheus我认为它不会将您的HTML表单转换为表单数据格式。请参阅问题谢谢,不知道为什么我的搜索没有找到它。
curl --request POST \
    --url http://localhost:3000/convert/url \
    --header 'Content-Type: multipart/form-data' \
    --form remoteURL=https://brave.com \
    --form marginTop=0 \
    --form marginBottom=0 \
    --form marginLeft=0 \
    --form marginRight=0 \
    -o result.pdf