2012-07-24 71 views
16

我们打算使用wkhtmltopdf将html转换为pdf,但我们关注wkhtmltopdf的可伸缩性。有没有人有任何想法如何衡量?我们的网络应用程序可能会尝试转换成千上万(相对复杂)的html,所以对我们来说有一些想法很重要。有没有人得到这方面的信息?wkhtmltopdf的性能

+0

圆角CSS角落引起了我渲染由20X的时间增加。删除这些在相对简单的HTML页面上将我的渲染从〜6秒降低到〜0.3秒。例如。 'border-radius:8px;'和'border-top-left-radius:6px;' – 2016-09-01 01:08:43

+0

在我的案例中,经过很多调查,我有从第三方获取QRcode的URL,这个第三方持有创建我的门票。 – shareef 2018-01-26 18:31:05

回答

5

在我的经验中,性能取决于你的照片。它有很多大图片可以显着减慢。如果可能的话,我会试着用一个估计你的服务器的负载的测试来进行测试。有些人确实将它用于密集的操作,但我从来没有听说过成千上万的人。我想所有事情都取决于你的内容和资源。

以下报价是直客wkhtmltopdf mailing list

我使用wkHtmlToPDF转换约6000封电子邮件一天PDF。这是所有 在4GB内存的四核服务器上完成的......它对于 来说已经足够了。

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


编辑: 添加到这一点,我只是有一些有趣的玩wkhtmltopdf。目前在具有4Gb内存的英特尔迅驰2上,我生成57页内容(混合p,ul,表格)的PDF,约100张图像,并且toc始终持续7秒钟处理<。我还运行visual studio,浏览器,http服务器和其他各种可能会降低速度的软件。我直接使用stdin和stdout而不是文件。


编辑: 我没有尝试这样做,但如果你有联系CSS,尝试在HTML文件中嵌入它(记得之前和测试正确看到效果后做!)。这里的改进很可能取决于缓存和CSS的服务位置 - 如果每次从磁盘读取或禁止从scss重新生成,它可能非常慢,但是如果结果被web服务器缓存(我不认为wkhtmltopdf在实例之间缓存任何东西)它可能没有很大的影响。因人而异。

+1

PLUS ONE用于从磁盘而不是Web服务器之间的图像。我只是测试它,节省了70%的发电时间! – np87 2014-03-31 12:21:59

+1

我会添加到这个答案的一件事是,如果你已经链接CSS,你应该尝试将其嵌入到HTML文件中。这也应该节省一些时间。 – xyres 2018-02-24 11:57:26

+0

@xyres好的来电!为不喜欢数学的人添加 – Nenotlep 2018-02-26 08:50:57

18

首先,你的问题是相当一般的;在询问任何项目的可扩展性时,需要考虑许多变量。显然,在一周内转换“数十万”HTML文件与期待在一天或一小时内完成这些操作之间存在差异。除此之外,“相对复杂”的HTML对其他人来说可能意味着不同的事情。这是说,我认为,因为我做了类似的事情,转换大约45万html文件,利用wkhtmltopdf;我会分享我的经验。

在这里是我的情形:

  • 450000 HTML文件
      文件
    • 95%的长度为一页
    • 通常含有2幅图像(相对路径,本地系统)
    • 片状数据(有时包含嵌套表)
    • 其他地方的简单标记(强,斜体,下划线等)
  • 一个备用桌面PC
    • 8GB RAM
    • 2.4GHz的双核处理器
    • 7200 HD

我用PHP编写一个简单的单线程脚本,遍历文件夹并将html文件路径传递给wkhtmltopdf。整个过程花费了大约2.5天的时间来转换所有文件,并且错误率极低。

我希望这可以让你了解在你的web应用程序中使用wkhtmltopdf可以期待什么。一些明显的改进将来自在更好的硬件上运行,但主要是利用多线程应用程序同时处理文件。

+27

供参考,平均每个文档为480毫秒 – 2014-09-02 20:01:37

+0

或每秒2页。 – xyres 2018-02-24 11:44:36

2

我们尝试在任何实现中使用wkhtmltopdf。我的对象是生成坐标点的巨大表格。通常我的pdf的容量= 500页

我们尝试使用wkhtmltopdf的端口到.net。结果是

- Pechkin - Pro: don't need other app. Contra: slow. 500 pages generated about 5 minutes 
- PdfCodaxy - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Problems with non unicode text 
- Nreco - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Incorrect unlock libs after use (for me) 

我们尝试使用从C#代码调用的二进制wkhtmltopdf。

Pro: easy to use, faster that libs 
Contra: need temporary files (cannot use Stream objects). Break with very huge (100MB+)html files as like as other libs 
+1

关于NReco.PdfGenerator,我不知道它如何比纯WkHtmlToPdf慢(内部它在单独的过程中调用WkHtmlToPdf.exe)。此外,它不需要安装WkHtmlToPdf:所有文件都嵌入到DLL中,并在错过时自动提取。 – 2014-09-10 16:12:00

3

wkhtmltopdf --print-media-type正在快速发展。但是你放弃了正常的CSS样式。

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

测试在wkhtmltopdf 0.12.2.1版本