簡體   English   中英

使用ITextSharp XMLWorkerHelper和解析HTML的性能低下

[英]Sluggish Performance using ITextSharp XMLWorkerHelper and Parsing HTML

我最近遇到了一個性能問題,其中涉及ITextSharp花費極長時間( 通常是30秒鍾以上 )來呈現HTML內容( 從CKEditor,TinyMCE等HTML編輯器傳遞 )。

以前,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 )。

可能的原因和想法

  • 我嘗試遍歷並從傳遞的內容中刪除任何多余和無效的標記,但這沒什么用。

  • 問題可能出在iTextSharp本身,還是XMLWorkerHelper如何工作? 我嘗試在此處使用iText XML Helper演示中的SAME輸入,而且速度非常快。 我認為性能至少是可比的。

  • 當前的考慮是使用一種存儲方法來實際存儲渲染的PDF,然后按需檢索它們,而不是動態生成它們。 我希望避免這種情況,但是它在桌子上。

  • 內容是從Microsoft Word( cringe )中粘貼的,我已嘗試對其進行盡可能多的清理,但是由於上述iText演示沒有相同內容的重大問題,因此我認為這不是主要問題。

  • 使用iTextSharp的替代方法?

我很樂意提供我可以提供的任何其他詳細信息和代碼。

盡管這個問題已有幾年歷史了,但我想讓以后的讀者知道我最終選擇通過TuesPechkin項目使用wkhtmltopdf庫。

與iTextSharp相比,該性能得到了顯着改善,並且它具有大量文檔,其中包含適用於您現有項目的各種方案的實現示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM