我最近偶然发现了wkhtmltopdf,发现它是在浏览器中从html到pdf进行即时转换的绝佳工具。
典型用法(在Windows中)将会出现:
wkhtmltopdf.exe --some-option "<div>Some html <b>formatted</b> text</div>" www.host.com/page_to_print.html file.pdf
我的问题是:是否可以选择使用<html><head></head><body><h1>This is a header</h1></body></html>
代替www.host.com/page_to_print.html
?
感谢您的帮助。
答案 0 :(得分:21)
是和否。
没有本机支持,但您可以使用windows命令提示管道将内容传输到wkhtmltopdf。试试这个命令:
echo "<h3>magical ponies</h3>" | wkhtmltopdf.exe - test.pdf
这类似于“回显此文本,将其输出stdout(标准输出流)输出到wkhtmltopdf stdin(标准流)”。 wkhtmltopdf命令中的破折号-
表示它从stdin而不是文件中输入它。
您还可以将HTML回显到文件中,将该文件提供给wkhtmltopdf并在脚本中删除该文件。
目前,文档的最佳资源是http://wkhtmltopdf.org/usage/wkhtmltopdf.txt和http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0_rc2-doc.html - 如果您仔细阅读,则不会提及输入类似HTML的字符串。
答案 1 :(得分:2)
只是对Nenotlep提供的答案进行了更正。正如Jigar所指出的那样(在对Nenotlep的回答的评论中),Nenotlep的命令在实际文本之前和之后产生引号。在我的系统(Windows 10)上,此命令是正确的解决方案:
echo ^<h3^>magical ponies^</h3^> | "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf
echo
命令不需要引号 - 但是,如果您不将文本放在引号之间,则需要转义<
和>
个字符({{1} }})。
尝试的另一种方法是将文本写入临时文件,在Windows上 - 甚至可能更快,因为有些消息来源说:
^
(这也可以写成一行:只需在两个命令之间放一个echo ^<h3^>magical ponies^</h3^> > temp.txt
"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf < temp.txt
。)
答案 2 :(得分:2)
使用PowerShell,您可以这样做:
$html = "<h1>Magical Ponies</h1><p>Once upon a time in Horseland, there was a band of miniat
ure creatures..."
$html | .\wkhtmltopdf.exe - C:\temp\test.pdf
只需确保您在\bin\
wkhtmltopdf
目录中运行代码,否则,您必须提供可执行文件的完整路径。
答案 3 :(得分:1)
除了pp提供的答案。如果您不想转义<
>
字符,您还可以执行以下操作:
echo | set /p="<h3>Magical ponies</h3>" | wkhtmltopdf - test.pdf
答案 4 :(得分:1)
我无法wkhtmltopdf
来完成将原始html转换为PDF的工作,但是我确实找到了一个简单的微服务,它可以在bantam.io上进行几分钟的工作。< / p>
这是它的工作方式:
bantam
.run('@images/html', {
html: `
<h1 style='width: 400px; text-align: center'>TEST</h1>
<br/>
<img src='https://images.unsplash.com/photo-1507146426996-ef05306b995a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80' />
`,
imageType: 'pdf',
})
.then(pdfUrl => {
// pdf is temporarily hosted on AWS S3 via a secure link at `pdfUrl`
});
它们还具有用于接收URL而不是原始HTML的选项,并且您可以生成图像以及PDF。这里是文档:https://bantam.io/functions/@images/html?link=docs&subLink=0