Birt 4.4.1:导出为pdf不显示图像

时间:2015-01-28 10:19:13

标签: ckeditor pdf-generation birt rich-text-editor

我的birt版包含一张图片,当我导出为HTML时,图像显示为反对导出,pdf不起作用,并显示以下消息“此延期项目的资源无法访问。”

我咨询了您的论坛,但我没有在简化的rptdesign问题文件下找到明确的解决方案,

知道是我建议我的团队根据我三年的生活经验与Birt一起工作:3,我担心下面的例子在pdf中无法正确显示,这意味着我必须寻找其他允许我在生成的pdf中显示TextEditor内容的工具(或库)。 :(

仅供参考:

  • 从数据库中检索要显示的内容(存储TextEditor的内容)。
  • 使用的Birt版本是4.4.1

档案:export_to_pdf.rptdesign

提前谢谢。

2 个答案:

答案 0 :(得分:0)

为了显示PDF的base64图像,您可以在图像元素的onCreate中使用带脚本的动态图像元素来解码base64。

importPackage(Packages.javax.imageio);
importPackage(Packages.java.io);
importPackage(Packages.sun.misc);
decoder = new BASE64Decoder();
decodedBytes = decoder.decodeBuffer(this.getRowData().getColumnValue("CLOBData"));
this.data =decodedBytes;
bais = new ByteArrayInputStream( decodedBytes);
bufimg = ImageIO.read(bais);
this.setHeight(bufimg.getHeight() +"px");
this.setWidth(bufimg.getWidth() +"px");

来自:http://developer.actuate.com/community/forum/index.php?/topic/35862-dynamic-textclob-dataset-html-content-not-showing-the-html-embeded-image-base64/

替代

<value-of format="HTML"> if(row["B_CONTENT"] == null) {"";}else{ "<img src='data:image/png;base64,"}</value-of><value-of format="HTML"> row["B_CONTENT"]</value-of><value-of format="HTML"> if(row["B_CONTENT"] == null ) {"";}else{"' height='120' width='100' />"} </value-of>

来自:http://developer.actuate.com/community/forum/index.php?/topic/29367-print-image-base64-in-birt-report/

答案 1 :(得分:0)

基于“JFreeman”的响应,我认为目前无法实现,因为我要显示的图像封装在HTML标记中,

  

图像不以PDF格式显示的原因是由于使用HTML将HTML64文本元素转换为图像。此HTML代码将在浏览器中的客户端执行,并且在将报表导出为生成服务器端的PDF时不会发生。

但我设法通过使用以下方法解决了这个问题:

  • 我创建了一个java进程来提取封装的code64图像 在HTML标签中,我运行图像的物理创建,而我 将其存储在我服务器中先前创建的文件夹中。
  • 这个处理java为我提供了创建的图片的完整URL 此网址将存储在名为“插图”的新表中
  • 我使用文本替换图像中的code64(参见附录部分中的插图NamedOrnumber541),创建的新频道将存储在新列中,新列的内容将出现在版本birt。
  • 在生成的报告结束时,我显示与使用组件“Image”参数化的“共享资源中的图像文件”启动的版本相关的所有图像,并且要显示的图像的URL存储在插图表中作为以前报道过。
  • 最后,在我的数据库中,我有两列,第一列包含封装在HTML标记内的base64编码图像(内容TextEditor),第二列将包含与第一列相同的内容,但不包括code64 image我刚刚指出要查看的图像位于报告的最后部分(附件)中,该部分显示了我的java处理已生成的图像。

这个算法确实有点复杂(我会做一个小项目,包含我有时间后完成的所有处理/控制)但关键是如何说服客户这个解决方案是明确的用户输入的文本的可见性,而不是被图片打扰: - )。