最近,我遇到了一个性能问题,涉及到ITextSharp需要非常长的时间(通常是30+秒)来呈现HTML (从HTML (如CKEditor、TinyMCE等)传递)。
以前,HTMLWorker被用来解析内容,而且效果很好。它是快速和相当准确的,但是当更复杂的HTML (如表、有序列表和无序列表)开始传入时,它开始动摇:
//The HTML Worker was quick, however it's weaknesses began to show with more
//complex HTML
List<IElement> objects = HTMLWorker.ParseToList(sr, ss);在这种情况下,复杂的标记是必需的,我选择使用XMLWorker来处理解析,而不是尝试执行正则表达式操作和其他讨厌的操作来解决这些问题。
//This outputs everything perfectly and retains all of the proper styling that is
//needed. However, when things get complex it gets sluggish
XMLWorkerHelper.GetInstance().ParseXHtml(writer,document,stringReader);XMLWorker的结果是令人难以置信的,它输出了我们需要的一切,但是它的性能使得它几乎无法使用。随着内容的复杂性增加(通过附加的表、样式和列表),加载时间也增加了。
上面的行似乎是性能瓶颈,使用它尝试几种不同的替代方法根本没有帮助(比如创建一个基本的自定义XmlHandler)。
可能的原因和想法
我很乐意提供我能提供的任何其他细节和代码。
发布于 2015-08-10 14:32:33
虽然这个问题已经有几年的历史了,但我想我会让未来的读者知道我最终选择了通过wkhtmltopdf使用TuesPechkin项目库。
与iTextSharp相比,性能有了很大的提高,而且它有很好的文档,提供了适合您现有项目的各种场景的实现示例。
https://stackoverflow.com/questions/15956306
复制相似问题