【问题标题】:Jasper Reports - Show images from html sourceJasper Reports - 显示来自 html 源的图像
【发布时间】:2015-11-16 14:07:58
【问题描述】:

我目前正在编辑一位同事创建的代码,该同事使用Jasper Reports 创建一个带有某些元素的PDF 文件,其中一个是一堆html 代码。此 html 由文本和图像组成(链接和base64 format)。

几乎所有东西都能完美运行,但我的 html 有问题。最重要的是图像没有显示出来,其次不是所有的 html 标签都得到处理。

这甚至可能与Jasper Reports 相关吗?

html 应该去的模板中的当前代码:

<textField>
    <reportElement positionType="Float" x="100" y="73" width="611" height="307" uuid="d3037b2c-6592-4d7b-b703-d64f736ca4be"/>
    <textElement markup="html"/>
    <textFieldExpression><![CDATA[$F{content_1}]]></textFieldExpression>
</textField>

模板要处理的数据:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<compass>
    <messages>
        <message>
            <attachmentCount>0</attachmentCount>
            <attachmentString></attachmentString>
            <contactPerson>compassmanager manager</contactPerson>
            <contactPersonDepartment>Bike</contactPersonDepartment>
            <content>&lt;p&gt;&lt;b&gt;123&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;
                     img src="http://globalgamejam.org/sites/default
                     /files/styles/game_sidebar__normal
                     /public/game/featured_image/promo_5.png
                     ?itok=9dymM8JD" style="width: 135px;height:                          
                     98px;"/&gt;&lt;b&gt;&lt;br/&gt;&lt;
                     /b&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;
                     456&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;
                     u&gt;789&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;
                     img src="data:image/jpeg;base64,/9j/
                     4AAQSkZJRgABAgAAAQABAAD......
                     sxwW6jrcshiI96diGk3OT0joAQBR0nmptgn//2Q=="
                     style="width: 25%;"/&gt;&lt;u&gt;&lt;br/&gt;&lt;
                     /u&gt;&lt;/p&gt;&lt;p&gt;&lt;strike&gt;
                     012&lt;/strike&gt;&lt;/p&gt;</content>
            <countries>BE</countries>
            <departments>Sales</departments>
            <duedate>16/11/2015</duedate>
            <messageType>ACTION</messageType>
            <title>Testerij</title>
        </message>
    </messages>
    <publishdate>16/11/2015</publishdate>
    <title>Compass 47.7</title>
</compass>

解决方案

如果在 Jasper Studio 中找到了 html 组件。我和同事之间有一个小讨论,是否从一开始就存在,但这对于目前的情况并不重要。正如 Petter Friberg 在下面所说,它至少可以从 6.0 及更高版本开始使用,自从我们开始使用 Jasper Reports 以来,我们一直在使用它。可能忽略了。

这适用于我的 html 和其中的链接图像,但尚未处理 base64 信息。我目前正在通过确保图像在粘贴或拖动到文本字段时上传并自动添加为链接图像来解决此问题。

我目前正在从 TextAngular 切换到 CKEditor/ng-ckeditor 组合,因为泡沫有用于此目的的插件,效果很好。

在我完成之前还有一些工作要做,但这是要走的路。

【问题讨论】:

  • 仅供参考:我添加了一个answer here,说明如何在 html 组件中使用 base64 图像

标签: html xml jasper-reports ckeditor base64


【解决方案1】:

使用textField NOmarkup="html" 将不适用于tableimgstyle="border:1px" ecc 等标签。

为什么?因为文本字段显示文本。格式化文本,例如。 &lt;b&gt;String&lt;/b&gt; 会起作用。

一种方法是检查 jasper 报告 htmlcomponent &lt;hc:html/&gt; 这将呈现您的 html 或 url 的图像

【讨论】:

  • 好的,谢谢您的解释!然后回到绘图板上寻找另一个解决方案。
  • 好的我找到了html组件(在jasper report 6.0 api中可用),它可以渲染html的图像,不知道这是否解决了你的问题...检查一下...
  • 我也找到了。我打算更新我的帖子,但还没有找到时间。还是谢谢!
  • 可以更新您的答案或发布它吗?我们在处理 HTML 图像时遇到了同样的问题...谢谢!
  • @PetterFriberg 在同一个 HTML 标记中是否有纯 HTML 和 base 64 图像的示例?