【问题标题】:IText Pdf creation from Html fails if HTML contains special/illegal characters如果 HTML 包含特殊/非法字符,则从 Html 创建 IText Pdf 失败
【发布时间】:2014-11-21 04:12:49
【问题描述】:

我正在使用 itext 从 html 内容创建 pdf。我使用 java String buffer 以表格的形式构建 html 内容。 Map 以键值对的形式包含文件的元数据值。我迭代这些键和值来构建 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)?在构建 html 时有什么方法可以识别和跳过它们吗?

【问题讨论】:

  • 这里唯一的坏字符是&amp;lt;,它不应该出现在你的HTML中。将其转换为正确的转义形式 &amp;lt; 应该可以修复它。
  • @Jongware:正在转义所有可能的 html 字符。转义后的内容是 ""$é6莚ÆuCÅ ©À SÀF;r 1Ì/XQ‡,Ô
  • “它失败了”不是对问题的有用描述。您最初的错误是Expected &gt; for tag,您肯定收到了新的错误消息吗?

标签: java html pdf itext illegal-characters


【解决方案1】:

在构建 HTML 时很难实时识别和跳过 您可以使用 Apache commons-lang 来转义 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

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多