2014-09-26 195 views
2

正在使用itext從html內容創建pdf。我使用java字符串緩衝區以表格的形式構建html內容。一個Map包含鍵值對形式的文件的元數據值。我迭代這些鍵和值來構建html表。問題是地圖中的一些元數據值是無意義/無效的符號。因此,pdf創建失敗,出現以下例外。IText如果HTML包含特殊/非法字符,則Html中的PDF創建失敗

java.io.IOException: Expected > for tag: <{1}/> near line 1, column 717 
at com.lowagie.text.xml.simpleparser.SimpleXMLParser.throwException(SimpleXMLParser.java:568) 
    at com.lowagie.text.xml.simpleparser.SimpleXMLParser.go(SimpleXMLParser.java:331) 
    at com.lowagie.text.xml.simpleparser.SimpleXMLParser.parse(SimpleXMLParser.java:579) 
    at com.lowagie.text.html.simpleparser.HTMLWorker.parse(HTMLWorker.java:141) 


Content which caused the exception is 
「$é6莚ÆuCÅ ©À SÀF;r 1Ì/XQ‡,Ô<ÒÐ"‡(¢ËÄòÅ1¡Ø€ÌÅc 

所以我的問題是這些字符是什麼(非Ascii,utf-unsupported)?有什麼方法可以在構建html時識別並跳過它們?

+0

唯一不好字符是這裏的<<,它不應該出現在你的HTML中。將它轉換爲正確的轉義形式'<'應該可以解決它。 – usr2564301 2014-09-26 09:30:15

+0

@Jongware:我正在轉義所有可能的html字符。逃脫後的內容是 「「$é6莚ÆuCÅ©À\t SAF; R 1I/XQ‡,Ô< OD "‡(¢€ËÄòÅ1¡ØIAC」 即使如此,它失敗.. – Vijay 2014-09-26 09:38:40

+0

「失敗」 是**不是一個有用的問題描述,你原來的錯誤是'Expected> for tag',當然你必須得到一個新的錯誤信息? – usr2564301 2014-09-26 09:51:12

回答

2

在現實時間,它是難以識別和同時建立HTML 跳過你可以使用Apache公地郎逃脫HTML

StringEscapeUtils.escapeHtml("「$é6莚ÆuCÅ ©À SÀF;r 1Ì/XQ‡,Ô<ÒÐ"‡(¢ËÄòÅ1¡Ø€ÌÅc") 

上面的輸出是

&ldquo;$&eacute;6&egrave;&#381;&scaron;&AElig;uC&Aring; &copy;&Agrave; S&Agrave;F;r 1&Igrave;/XQ&Dagger;,&Ocirc;&lt;&Ograve;&ETH;&quot;&Dagger;(&cent;&Euml;&Auml;&ograve;&Aring;1&iexcl;&Oslash;&euro;&Igrave;&Aring;c