使用Apache FOP生成PDF时无法传递动态图像值(base64格式)

时间:2015-06-02 14:54:52

标签: apache pdf xslt apache-fop dynamic-image-generation

我正在使用FOP库从xml文件生成pdf,能够生成通过另一个xml传递的动态信息的所有数据(图像除外)。它不允许我传递图像值如下

<fo:inline>  
          <fo:external-graphic content-width="109.5pt"
                                    content-height="50.25pt"
                                    src="<xsl:value-of select="paymentno" />"
            </fo:external-graphic >
</fo:inline>

其中动态传递的xml数据是

`<tns:paymentno>
"url(&quot;data:image/auto;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAAAoCAIAAAAAKyESAAAAYUlEQVR42u3PQQoAIAgEwP7/6YIiEC3oGownjWVjWt/T5qwlvqQz5utyKzkGUvJYlX55aahnjOUAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P/+H/gGaQxUFTT6pUgAAAABJRU5ErkJggg==;&quot;)"</tns:paymentno>`

还有一件事,如果我将静态值(图像)直接传递给xsl,那么我可以在我的pdf中获取图像。 如果您有任何想法,请尽可能为我提供解决方案

2 个答案:

答案 0 :(得分:0)

您的XSL不正确。你不能只把xsl:value-of内联。请参阅此答案以获取编写模板的灵感。

Inserting a base64 encoded image into xsl-fo file while using apache-poi

答案 1 :(得分:0)

您将把结果传递给XSL函数,因此您可以直接读取该值。

<fo:inline>
    <fo:external-graphic
        content-width="109.5pt"
        content-height="50.25pt"
        src="url({paymentno})">
    </fo:external-graphic >
</fo:inline>

如果您真的想使用value-of,那么您将使用它来设置xsl属性。从内存来看,这应该是(未经测试的):

<fo:inline>
    <fo:external-graphic
        content-width="109.5pt"
        content-height="50.25pt">

        <xsl:attribute name="src">
            <xsl:value-of select="paymentno"/>
        </xsl:attribute>

    </fo:external-graphic>
</fo:inline>