飞碟(xhtmlrenderer)请求图像4次

时间:2010-07-30 07:20:23

标签: java itext flying-saucer xhtmlrenderer

在我的xhtml中我有以下内容:

...
<img src="myImage.jpg" />
...

我这样渲染:

ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(XMLResource.load(in).getDocument(), url);
renderer.layout();
renderer.createPDF(out);

生成的PDF符合预期,但我注意到图像(仅在xhtml中包含一次并且只呈现一次)被请求4次。

现在,除了明显的额外数据下载问题外,这对大多数人来说并不是一个问题。

然而,我需要为动态图像实现“使用过期”图像缓存,这已成为一个真正令人头痛的问题......

为什么飞碟如果只渲染一次,需要对图像发出4次请求?

2 个答案:

答案 0 :(得分:1)

这是在最新版本的FlyingSaucer中修复的。我已经用9.0.3确认了自己,虽然我相信之前的几个小版本也包含修复。

答案 1 :(得分:0)

我刚刚完成了代码,这里没有解决方案(没有重写itext和飞碟)。

第一次打开流只是为了测试它是否可以打开,数据没有被读取。

第二次是itext读取头文件来确定文件类型,只读取前4个字节。

第三次是itext确定它看起来的图像的尺寸 - 我不确定,但除了标题之外,我不会想太多。

最后一次阅读就是渲染图像。

因此下载影响不大,4个网址连接 - 是的,但整个流只传输一次

我的“使用后过期”缓存必须“在第四次使用时过期”。

相关问题