fop:来自servlet的图像

时间:2013-11-11 16:00:06

标签: xslt servlets apache-fop

我要从servlet添加一个图像,然后将其添加到xsl。

这个servlet有一个返回base64 url​​的getUrl方法。

我试过这个,但不正确:

的java:

Transformer _Transformer = tFactory.newTransformer(style);

tFactory.setAttribute("imageChart", "ChartCreator?chartConfig=" + ChartPdfDecoder.getURL(chartConfig));

xsl:

<fo:block margin-left="1cm" margin-top="0.2cm" height="265px" width="310px">
    <fo:external-graphic src="url('$imageChart')"/>
</fo:block>

谁能帮帮我?

由于

2 个答案:

答案 0 :(得分:0)

这条线路有一个问题......

<fo:external-graphic src="url('$imageChart')"/>

由于在这里使用了单个撇号,因此它将在字面上寻找“$ imageChart”的URL。您可能想要的是此时由XSLT写出的变量 $ imageChart 的值。正确的语法就是这个..

<fo:external-graphic src="url('{$imageChart}')"/>

这里的花括号是属性值模板,表示要计算的表达式,而不是字面输出。

当然,您需要确保将变量/参数 $ imageChart 设置为图像的正确网址。

答案 1 :(得分:0)

您需要回答问题&#34; $ imageChart的价值是多少?&#34; ...如果imageChart是一个包含暗示的Base64编码图像的变量,那么你需要使用一个data:scheme来实际的src属性,如下面的你需要设置实际图像的mimetype (下面样式表中的$ mimetype):

     <fo:external-graphic>
        <xsl:attribute name="src">
            <xsl:text>url('data:</xsl:text>
            <xsl:value-of select="$mimetype"/>                
            <xsl:text>;base64,</xsl:text>
            <xsl:value-of select="$imageChart"/>
            <xsl:text>')</xsl:text>
        </xsl:attribute>
    </fo:external-graphic>