首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ITextSharp XMLWorkerHelper和解析XMLWorkerHelper的缓慢性能

使用ITextSharp XMLWorkerHelper和解析XMLWorkerHelper的缓慢性能
EN

Stack Overflow用户
提问于 2013-04-11 18:37:23
回答 1查看 1.9K关注 0票数 1

最近,我遇到了一个性能问题,涉及到ITextSharp需要非常长的时间(通常是30+秒)来呈现HTML (从HTML (如CKEditor、TinyMCE等)传递)。

以前,HTMLWorker被用来解析内容,而且效果很好。它是快速和相当准确的,但是当更复杂的HTML (如表、有序列表和无序列表)开始传入时,它开始动摇:

代码语言:javascript
复制
//The HTML Worker was quick, however it's weaknesses began to show with more 
//complex HTML
List<IElement> objects = HTMLWorker.ParseToList(sr, ss);

在这种情况下,复杂的标记是必需的,我选择使用XMLWorker来处理解析,而不是尝试执行正则表达式操作和其他讨厌的操作来解决这些问题。

代码语言:javascript
复制
//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)。

可能的原因和想法

  • 我试着从正在传递的内容中删除任何无关的无效标记,但效果甚微。
  • 问题是否在于iTextSharp本身以及XMLWorkerHelper是如何工作的?我试图在这里的iText XML帮助演示中使用相同的输入,而且速度惊人。我以为演出至少可以媲美。
  • 当前的注意事项是使用存储方法来实际存储呈现的PDF,然后按需检索它们,而不是动态生成它们。我宁愿避免这种情况,但这是摆在桌面上的。
  • 这些内容是从Microsoft (cringe)中粘贴出来的,我已经尝试尽可能地清理它,但我不认为这是一个大问题,因为上面提到的iText演示对于相同的内容没有重大问题。
  • 使用iTextSharp的可能替代方案?

我很乐意提供我能提供的任何其他细节和代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-10 14:32:33

虽然这个问题已经有几年的历史了,但我想我会让未来的读者知道我最终选择了通过wkhtmltopdf使用TuesPechkin项目库。

与iTextSharp相比,性能有了很大的提高,而且它有很好的文档,提供了适合您现有项目的各种场景的实现示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15956306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档