PDF IText | ClassCastException - com.lowagie.text.Paragraph无法强制转换为com.lowagie.text.Table

时间:2012-07-19 09:57:13

标签: java pdf-generation itext

我正在使用com.lowagie.text.xml.SAXiTextHandler将XML转换为PDF,使用iText(v - 2.1.7)。我得到以下错误,虽然我可以看到我正确使用标签。验证形成的XML是有效的,我可以在浏览器中查看它没有错误。尝试执行parser.parse(....)时代码失败。我已经检查了我写标签的方式,它看起来很好。我基本上添加了表标签,包含行标签,其中包含单元格标签。 单元格标签内部有一个段落标记(或)段落中有段落和块标记。有什么方法可以解决这个问题发生的地方吗?

*从XML中删除了所有段落标记,然后再次尝试。它返回相同的错误 - 这是使用的新XML - http://pastebin.com/hmyPcGDw *

*即使这个简单的xml文件现在也会生成相同的例外 - http://pastebin.com/89U9vybt *

对我而言,它看起来像是com.lowagie.text.xml.SAXiTextHandler的问题。有什么帮助吗?

java.lang.ClassCastException: com.lowagie.text.Paragraph cannot be cast to com.lowagie.text.Table
        at com.lowagie.text.xml.SAXiTextHandler.handleEndingTags(Unknown Source)
        at com.lowagie.text.xml.SAXiTextHandler.endElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
        at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endNamespaceScope(XMLDTDValidator.java:2054)
        at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2005)
        at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1741)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2898)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)

1 个答案:

答案 0 :(得分:1)

这是因为你的xml标签之前和之后都有一些空白区域(更准确地说是<table>标签之后的空白区域)。我尝试了你的例子,我有同样的例外。我将你的xml代码复制/粘贴到eclipse(或记事本++)我格式化它(删除所有不需要的空白区域),然后我再次尝试,问题解决了! pdf生成得很好!