wkhtmltopdf的表现

raj*_*dhi 21 html pdf performance xhtml wkhtmltopdf

我们打算使用wkhtmltopdf将html转换为pdf,但我们担心wkhtmltopdf的可扩展性.有谁知道它如何扩展?我们的网络应用程序可能会尝试转换数十万(相对复杂的)HTML,因此对我们来说有一些想法非常重要.有人有任何相关信息吗?

小智 19

首先,你的问题很普遍; 在询问任何项目的可伸缩性时,需要考虑许多变量.显然,在一周内转换"数十万"HTML文件并期望在一天或一小时内完成此操作之间存在差异.除此之外,"相对复杂"的HTML对其他人来说意味着不同的东西.

话虽这么说,我想我已经做了类似的事情,使用wkhtmltopdf转换大约450,000个html文件; 我会分享我的经验.

这是我的场景:

  • 450,000个HTML文件
    • 95%的文件长度为一页
    • 一般包含2个图像(相对路径,本地系统)
    • 表格数据(有时包含嵌套表格)
    • 其他地方的简单标记(强,斜体,下划线等)
  • 备用台式电脑
    • 8GB RAM
    • 2.4GHz双核处理器
    • 7200RPM HD

我使用了一个用PHP编写的简单单线程脚本来迭代文件夹并将html文件路径传递给wkhtmltopdf.转换所有文件大约需要2.5天,错误非常少.

我希望这可以让您深入了解在Web应用程序中使用wkhtmltopdf可以获得的内容.一些明显的改进将来自在更好的硬件上运行,但主要来自利用多线程应用程序同时处理文件.

  • 对于不喜欢数学的人来说,每个平均每个文档平均达到480毫秒 (32认同)
  • 或每秒 2 页。 (2认同)

Nen*_*lep 7

根据我的经验,表现取决于你的照片.它有很多大型图片,可以显着减慢速度.如果可能的话,我会尝试进行测试,估计服务器的负载.有些人确实用它来进行密集操作,但我从来没有听说过成千上万的人.我想一切都取决于你的内容和资源.

以下引用直接来自wkhtmltopdf邮件列表:

我正在使用wkHtmlToPDF将每天约6000封电子邮件转换为PDF.这一切都是在具有4GB内存的四核服务器上完成的...它甚至足够了.

有一些性能提示,但我建议在优化性能之前尝试一下您的瓶颈.例如,我记得有人说如果可能的话,直接从磁盘加载图像而不是在其间安装Web服务器可以加快速度.


编辑:添加到此我只是玩wkhtmltopdf玩得很开心.目前在具有4Gb内存的英特尔迅驰2上,我生成具有57页内容(混合p,ul,表格)的PDF,约100张图像和一个toc始终<7秒.我也在运行视觉工作室,浏览器,http服务器和其他各种软件,可能会降低它的速度.我直接使用stdin和stdout而不是文件.


编辑:我没有尝试过这个,但如果您已经链接了CSS,请尝试将其嵌入HTML文件中(记得在测试之前和之后进行正确的查看效果!).这里的改进很可能取决于缓存和CSS服务的地方 - 如果每次都从磁盘读取或上帝禁止从scss重新生成,它可能会很慢,但如果结果是由网络服务器缓存的(我不认为wkhtmltopdf在实例之间缓存任何东西)它可能没有很大的影响.因人而异.

  • PLUS ONE 用于来自磁盘的图像,而不是介于两者之间的 Web 服务器。我刚刚测试了它并节省了 70% 的生成时间! (2认同)
  • 我要在这个答案中添加的一件事是,如果您链​​接了 CSS,则应该尝试将其嵌入 HTML 文件中。这也应该可以节省一些时间。 (2认同)

Ish*_*Ish 5

wkhtmltopdf --print-media-type正在快速燃烧。但是你会失去正常的 CSS 样式。

这可能不是复杂 html 页面导出的理想解决方案。但它对我有用,因为我的 html 内容非常简单并且是表格形式。

在版本上测试 wkhtmltopdf 0.12.2.1