0

在我的 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 次请求?

4

2 回答 2

1

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

于 2013-10-04T21:16:25.917 回答
0

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

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

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

第三次是 itext 确定它看起来的图像尺寸 - 我不确定,但我认为除了标题之外没有太多其他内容。

最后一次读取是渲染图像。

所以下载影响不大,4个url连接——是的,但是整个流只传输一次

而我的“使用过期”缓存必须是“第 4 次使用过期”。

于 2010-07-30T08:14:43.383 回答