标签:file-io flying-saucer java bytearray xhtml
我有一个解决方案,可将字符串插入XHTML文档并将结果打印为“报告”.我的雇主问我们是否可以从SQL数据库(存储为字节数组)中提取图像以插入到报告中.
我将FlyingSaucer用作XHTML解释器,并且一直在使用Java DOM来修改存储在报告生成器软件包中的预存储报告.
目前,我唯一想到的解决方案是构造图像,将它们保存为文件,在构造的报告中将文件链接到img标签(或背景图像)中,打印报告,然后删除文件.这似乎很草率,我想这将非常耗时.
我不禁感到必须有一个更优雅的解决方案.关于将字节数组插入html的任何建议?
解决方法:
>阅读图像并将其转换为Base64编码形式:
InputStream image = getClass().getClassLoader().getResourceAsStream("image.png");
String encodedImage = BaseEncoding.base64().encode(ByteStreams.toByteArray(image));
我使用了Google Guava的BaseEncoding
和ByteStreams
.
>在您的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);
> Unfortunatley FlyingSaucer不支持现成的DataURI,因此您必须创建自己的ReplacedElementFactory.阅读Using Data URLs for embedding images in Flying Saucer generated PDFs文章-它包含完整的解决方案.
标签:file-io,flying-saucer,java,bytearray,xhtml 来源: https://codeday.me/bug/20191122/2060064.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。