gpt4 book ai didi

java - IO 问题 - 字节数组图像转换为 XHTML(FlyingSaucer)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:13 35 4
gpt4 key购买 nike

我有一个解决方案,可以将字符串插入 XHTML 文档并将结果打印为报告。我的雇主问我们是否可以从他们的 SQL 数据库(存储为字节数组)中提取图像以插入到报告中。

我使用 FlyingSaucer 作为 XHTML 解释器,我一直在使用 Java DOM 修改我存储在报告生成器包中的预存储报告。

我目前唯一能想到的解决方案是构建图像,将它们保存为文件,在构建的报告中将文件链接到 img 标签(或背景图像)中,打印报告,然后删除文件。这看起来真的很草率,我想这会非常耗时。

我不禁觉得一定有更优雅的解决方案。将字节数组插入 html 有什么建议吗?

最佳答案

  1. 读取图像并将其转换为 Base64 编码形式:

    InputStream image = getClass().getClassLoader().getResourceAsStream("image.png");
    String encodedImage = BaseEncoding.base64().encode(ByteStreams.toByteArray(image));

    我用过 BaseEncodingByteStreams来自 Google Guava .

  2. 更改 Document 对象中 img 元素的 src 属性。

    Document doc = ...; // get Document from XHTMLPanel.getDocument() or create
    // new one using DocumentBuilderFactory

    doc.getElementById("myImage").getAttributes().getNamedItem("src").setNodeValue("data:image/png;base64," + encodedImage);
  3. 不幸的是,FlyingSaucer 不支持开箱即用的 DataURI,因此您必须创建自己的 ReplacedElementFactory。阅读Using Data URLs for embedding images in Flying Saucer generated PDFs文章 - 它包含一个完整的解决方案。

关于java - IO 问题 - 字节数组图像转换为 XHTML(FlyingSaucer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068494/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com