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

Ckeditor Birt 4.4.1:导出为pdf不显示图像,ckeditor,pdf-generation,birt,rich-text-editor,Ckeditor,Pdf Generation,Birt,Rich Text Editor,我的birt版本包含一张图片,当我导出到HTML时,图像显示为pdf格式的导出无效,出现以下消息“无法访问此延迟项的资源” 我咨询了你的论坛,但我没有找到一个明确的解决方案,在简化的RPT设计问题文件下面 根据我三年的Birt:3经验,我知道是我建议我的团队与Birt合作的,我担心下面的示例无法正确显示在pdf中,这意味着我必须寻找其他工具(或库),允许我在生成的pdf中显示TextEditor的内容:( 仅供参考: 要显示的内容从数据库(存储TextEditor的内容)中检索 使用的Birt

我的birt版本包含一张图片,当我导出到HTML时,图像显示为pdf格式的导出无效,出现以下消息“无法访问此延迟项的资源”

我咨询了你的论坛,但我没有找到一个明确的解决方案,在简化的RPT设计问题文件下面

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

仅供参考:

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


提前感谢。

为了显示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");
发件人:

另类

<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>
if(row[“B_CONTENT”]==null){“;}else{“row[“B_CONTENT”]if(row[“B_CONTENT”]==null){“;}else{“height='120'width='100'/>”
from:

根据“”的响应,我认为我想要的当前不可能,因为我想要显示的图像被封装在HTML标记中

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

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

  • 我创建了一个java进程来提取封装的code64图像 在HTML标记中,我运行图像的物理创建,然后 将其存储在“我的服务器”中以前创建的文件夹中
  • java提供了创建图片的完整URL 此url将存储在名为“插图”的新表中
  • 我将图像中的代码64替换为文本(请参见附录部分中的插图名称或编号541),创建的新频道将存储在新列中,新列的内容将显示在版本birt中
  • 在生成的报告的末尾,我显示了与使用组件“Image”参数化“Image file in shared resources”启动的版本相关的所有图像,并且要显示的图像的URL存储在插图表中,与前面报告的一样
  • 最后,在我的数据库中,我有两列,第一列包含封装在HTML标记(content TextEditor)中的base64编码图像,第二列将包含与第一列相同的内容,只是我没有使用code64图像,只是指示要查看的图像在报告的最后一部分(附件)显示已由我的java处理生成的图像

诚然,该算法有点复杂(我将做一个小项目,一旦有时间,该项目将包含所有处理/控制),但关键是如何说服客户,该解决方案需要用户输入的文本清晰可见,而不受图片干扰:-).

我们可以使用“图像”按钮在报告中显示动态图像"birt元素,这个元素将正确地导出为PDF。但是在您的示例中,图像是一个基于字符串base64编码的,嵌入在HTML文本中。如果我正确理解了用例,您的整个报告将主要是一个HTML文本元素?好吧,PDF发射器无法以本机方式处理此类图像。它可能扩展到尽管支持这种说法。@Dominique:上面的例子只是对我的问题的简化,但我的最终版本包含了几个表格和图形。因此,据我所知,BIRT无法管理包含格式化图像base64 encoded:()的html内容,而我最大的问题是富文本编辑器(例如:ckeditor)通常以html格式生成文本,这是我保存在数据库中的内容,我没有其他技巧来解决这个问题!!只有当我的内容只是编码图像code64时,你的解决方案才有效,但我的示例是封装在html标记中的code64图像:(我找到了一个解决方法(不是技术性的)但是我没有权利发布回复,我的账户目前被禁止,我会将其作为评论发布,但你会丢失文本格式,并被误读,希望我在这个论坛上的贡献能帮助我走出黑名单网站:)嗨,尼姆波,你创建了一个小项目来代表你的解决方案吗?