使用Thymeleaf + FOP

时间:2017-10-13 11:52:20

标签: xml thymeleaf apache-fop

我想知道是否有人可以帮我解决这个问题。我确实谷歌了几天,但我找不到任何可以帮助我的东西。 我必须使用Thymeleaf和FOP创建一个PDF文件。 我从XML文件中获取了所有PDF信息。在这个XML文件中,我有一些存储在base64中的PNG图像,必须在PDF文件中显示。

<myXML:Attachments>
        <myXML:Attached attachedID="FIRST_IMAGE">
            <myXML:ImageData>
                <myXML:Description>FIRST_IMAGE</myXML:Description>
                <myXML:Mime>image/png</myXML:Mime>
                <myXML:Data>iVBO...IIH=</myXML:Data>
            </myXML:ImageData>
        </myXML:Attached>
        <myXML:Attached attachedID="SECOND_IMAGE">
            <myXML:ImageData>
                <myXML:Description>SECOND_IMAGE</myXML:Description>
                <myXML:Mime>image/png</myXML:Mime>
                <myXML:Data>iVBO..CYII=</myXML:Data>
            </myXML:ImageData>
        </myXML:Attached>
</myXML:Attachments>

首先,我检查了我可以在PDF文件中打印图像。因此,我对 Attached.ImageData.Data 信息进行了编码,以确认图像正常。请参阅以下示例:

<fo:external-graphic 
    src="data:image/png;base64,iVBO...IIH"
/>

上面的例子很好用。其次,我检查了解析的数据与XML文件完全相同:

<fo:table-row
th:each="img : ${Attachments.Attached}">
<fo:table-cell>     
    <fo:block th:text="${'data:' + img.ImageData.Mime + ';base64,'}+${{img.ImageData.Data}}">**srcImage**</fo:block>
</fo:table-cell>

在我的PDF文件中,我可以看到:数据:IMAGE_PNG; base64,iVBO ...... 所以,我觉得解析的信息工作正常。 不幸的是,当我用下面的例子执行代码时,我收到了一个错误:

<fo:table-row
    th:each="img : ${Attachments.Attached}">
    <fo:table-cell> 
    <fo:block th:text="srcImage = ${'data:' + img.ImageData.Mime + ';base64,'}+${{img.ImageData.Data}}">
            <fo:external-graphic src="${srcImage}"/>
    </fo:block>
</fo:table-row>
  

模板解析期间发生错误(templateCaused by:   org.thymeleaf.exceptions.TemplateProcessingException:可以   不解析为表达式:

     

“srcImage = $ {'data:'+ img.ImageData.Mime +   '; base64,'} + $ {{img.ImageData.Data}}“at   org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:131)     在   org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:62)     在   org.thymeleaf.standard.expression.StandardExpressionParser.parseExpression(StandardExpressionParser.java:44)     在   org.thymeleaf.engine.EngineEventUtils.parseAttributeExpression(EngineEventUtils.java:220)     在   org.thymeleaf.engine.EngineEventUtils.computeAttributeExpression(EngineEventUtils.java:207)     在   org.thymeleaf.standard.processor.AbstractStandardExpressionAttributeTagProcessor.doProcess(AbstractStandardExpressionAttributeTagProcessor.java:67)     在   org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)     在   org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)     在   org.thymeleaf.util.ProcessorConfigurationUtils $ ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)     在   org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)     在   org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205)

我是Thymeleaf和FOP的佼佼者。如果你能帮我解决这个问题,我真的很感激。

感谢您的考虑。

0 个答案:

没有答案