2015-04-02 46 views
0

這裏是我的代碼:將HTML轉換爲PDF iTextSharp的 - 無效的嵌套p標籤發現

Dim sr As StreamReader = New StreamReader(args(0)) 
Dim htmlStr As String = sr.ReadToEnd 
sr.Close() 

Using document As Document = New Document() 
    Using writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("C:\Test\myfile.pdf", FileMode.Create)) 
     document.Open() 
     XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, New StringReader(htmlStr)) <--Error here 
    End Using 
    document.Close() 
End Using 

誰能幫我找出我能做些什麼來解決這個問題?我正在閱讀的htm文件看起來很好,而且我也沒有辦法改變文件本身。

+0

布魯諾已經得到了答案,但我想解決你說的不能改變文件本身。您可能無法更改文件,但可以在文件和iText的處理之間注入一個進程。如果你的HTML相對簡單,你可能可以脫離一些字符串替換,或者你可以看看像[Tidy.Net](http://sourceforge.net/projects/tidynet/)或另一個HTML清理器。 – 2015-04-03 13:27:48

回答

0

錯誤消息說明發生了什麼問題:錯誤出現在您的HTML中。

你在某個地方有一個<p>標籤,然後是另一個結束標籤(只有你可以告訴我們哪個標籤)不是</p>

例如:

這將是正確的[1]:

<p>This is a paragraph<br />with a new line</p> 

然而,這將是不正確的。[2]:

<p>This is a paragraph</br>with an incorrect new line</p> 

這也是無效[3] :

<b>Some bold text <p>inside a paragraph</b> that is not correctly nested.</p> 

解析器會理解[1],但拋出你有[2]或[3]時得到的錯誤。

+0

嗨布魯諾。我將所有
標籤替換爲
。現在我得到一個錯誤「無效的嵌套div標籤發現預期結束標籤小時」。我試圖用


代替
,但它仍然給我同樣的錯誤 – ElenaDBA 2015-04-06 15:27:57

+0

所以你說我的答案解決了一個問題,但你現在遇到了另一個問題。你是否意識到只有你能幫助你的事實?你說你已經用'


'代替了所有'
'實例,但是你的XML解析器說你沒有。我相信你的XML解析器,所以你應該。 (我希望你明白這與iTextSharp無關:這是一個XHTML問題。) – 2015-04-06 15:33:59