Я преобразовываю XML в pdf, используя apache fop.
Шаблон с 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>
Error
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)
EDIT
Использованные библиотеки:
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