我正在使用apache fop将XML转换为pdf。
带有fo:instream-foreign-object的模板向我抛出错误。
XSL
<xsl:template match="disp-formula">
<fo:instream-foreign-object width="50%" content-width="scale-to-fit">
<svg xmlns="http://www.w3.org/2000/svg" width="1037" height="439"
viewBox="0 0 1037 439">
<image height="439px" width="1037px"
xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:attribute name="xlink:href">
<xsl:text>mathml/</xsl:text><xsl:value-of select="@id"/><xsl:text>.mml</xsl:text>
</xsl:attribute>
</image>
</svg>
</fo:instream-foreign-object>
</xsl:template>
错误
java.lang.ClassCastException:org.apache.batik.dom.GenericElement 无法在以下位置强制转换为org.apache.batik.anim.dom.SVGOMElement org.apache.fop.fo.extensions.svg.SVGElement.getDimension(SVGElement.java:134) 在 org.apache.fop.fo.flow.InstreamForeignObject.prepareIntrinsicSize(InstreamForeignObject.java:112) 在 org.apache.fop.fo.flow.InstreamForeignObject.getIntrinsicWidth(InstreamForeignObject.java:125) 在 org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getInlineArea(AbstractGraphicsLayoutManager.java:60) 在 org.apache.fop.layoutmgr.inline.AbstractGraphicsLayoutManager.getNextKnuthElements(AbstractGraphicsLayoutManager.java:116) 在 org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:700) 在 org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:629)
编辑
使用的库:
avalon-framework-api-4.3.1.jar
avalon-framework-impl-4.3.1.jar
batik-all-1.8.jar
commons-io-1.3.1.jar
commons-logging-1.0.4.jar
fontbox-1.8.5.jar
jeuclid-core-3.1.9.jar
jeuclid-fop-3.1.9.jar
serializer-2.7.0.jar
xalan-2.7.2.jar
xercesImpl-2.9.1.jar
xml-apis-1.3.04.jar
xml-apis-ext-1.3.04.jar
fop-2.1.jar