It *_*unt 8 java pdf-generation embedded-resource flying-saucer xhtmlrenderer
我有一个xhtml文档,我正在使用flyingsaucer变成PDF.xhtml有几个标签,内嵌base64编码图像.xhtml的来源是动态的,因此图像标签所在的结构可能会有所不同.这是标签的样子:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAagAAAEuCAYAAADbW4YFAAAgAElEQVR4Aex9CYBdRZ ...
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中查看html时,图像显示正确,但是,img元素不会在最终的PDF中呈现.以下是我如何渲染它来创建PDF.
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(builder.parse(source), "");
renderer.layout();
renderer.createPDF(response.getOutputStream(),true);
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道我应该采取什么方法来实现这一目标?我看到了这个帖子,但是,我正在使用内联图像,所以我看不出如何使用Edd的解决方案来实现这一点.
提前致谢
是的,您可以使用此处给出的方法:在flyingsaucer生成的pdf中从servlet渲染图像
Edd在哪里:
InputStream input = null;
try {
input = ...;
byte[] bytes = IOUtils.toByteArray(input);
Image image = Image.getInstance(bytes);
Run Code Online (Sandbox Code Playgroud)
在Edd的情况下,图像来自远程源(他跳过那个位input = ...;).在你的情况,你只是想从您的Base64编码的数据读它(后文base64,首先使用Base64编码解码器,以获得二进制数据,进入byte[]或流,然后你可以使用的Java的ImageIO,创建从字节的图像和按照Edd的方法将图像转换为PDF.感谢Edd在这里(肯定是upvote!).
小智 7
Flying-Saucer支持数据:本地协议.您所要做的就是注册一个协议处理程序:
-Djava.protocol.handler.pkgs=org.xhtmlrenderer.protocols
Run Code Online (Sandbox Code Playgroud)
无论如何都不需要servlet.
| 归档时间: |
|
| 查看次数: |
13030 次 |
| 最近记录: |