外部流对象的XSL-FO转换错误

时间:2019-03-19 07:03:54

标签: java xslt xsl-fo

我正在使用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

0 个答案:

没有答案