【发布时间】: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><p><b>123</b></p><p><
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;"/><b><br/><
/b></p><p><i>
456</i></p><p><
u>789</u></p><p><
img src="data:image/jpeg;base64,/9j/
4AAQSkZJRgABAgAAAQABAAD......
sxwW6jrcshiI96diGk3OT0joAQBR0nmptgn//2Q=="
style="width: 25%;"/><u><br/><
/u></p><p><strike>
012</strike></p></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