是否有任何wkhtmltopdf选项来转换HTML文本而不是文件?

时间:2014-02-18 20:16:28

标签: html pdf wkhtmltopdf

我最近偶然发现了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

感谢您的帮助。

5 个答案:

答案 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.txthttp://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