ApacheFOP svg背景很慢

时间:2016-07-21 17:11:47

标签: java performance svg batik apache-fop

我正在使用ApacheFOP来渲染一些PDF。在这些PDF中,我使用SVG为边缘绘制一个圆角框:

<fo:table-cell
    number-columns-spanned="2"
    background-image="/images/top-left.svg"
    background-repeat="no-repeat">
        <fo:block/>
</fo:table-cell>

top-left.svg文件非常简单:

<svg width="10px" height="10px" xmlns="http://www.w3.org/2000/svg">
    <circle cx="10px" cy="10px" r="9.5px" stroke="black" stroke-width="1px" fill="none" />
</svg>

对于右上角,左下角和右下角重复相同的步骤。

问题是,在从ApacheFOP 0.95更新到ApacheFOP 2.1之后,生产服务器中的渲染每个SVG需要大约15秒。我无法在计算机上重现该问题。

我的开发人员桌面和生产服务器都在运行Linux。

是否有任何系统因素可能会使SVG渲染速度变慢?

由于

1 个答案:

答案 0 :(得分:1)

延迟是由下载每个SVG的DTD架构引起的。很难发现它,因为下载是由Barcode4J执行的,而不是由ApacheFOP本身执行的。更具体地说,BarcodePreloader类试图解析SVG,因为它是在PreloaderSVG之前调用的。我们暂时解决了从SVG文件中删除DTD声明的问题。