0

我正在使用 iText PDF 5.4 和 Java2D 界面(java.awt.Graphics画布),但我遇到了严重的渐变问题。

我正在画许多矩形,它们的颜色是LinearGradientPaint. 这会产生大文件(例如 10 MB),并尝试在例如中打开结果Preview.app会使计算机完全停止。问题似乎是内存使用,因为前几十个框绘制得相当快,然后性能随着更多的框线性下降,这意味着对于一个典型的页面,它需要超过 10 分钟才能打开。

Adobe Acrobat 也很慢,但至少需要 4 或 5 秒,而不是几分钟。


这是iText的错误吗?iText 中是否有控制渐变表示的设置调整?我猜它会将它们分解成数百个单独的绘制命令,而不是使用直接渐变组件(如果存在的话——我知道它存在于 SVG 中,但我不知道 PDF 文件)。

条件是我留在 中awt.Graphics,我不能重写我的渲染代码以不使用 Java2D。

4

1 回答 1

1

另一种想法是使用Apache Batik并输出到 SVG。有一个示例显示了如何启用对LinearGradientPaintSVG 等价物的正确转码。

编辑:似乎有一个新的 Java2D-to-SVG 库JFreeSVG。最近的变化表明已经实现了渐变。

于 2013-06-25T12:27:33.977 回答