java - Apache FOP svg 背景非常慢

标签 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 渲染速度减慢这么多?

谢谢

最佳答案

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

关于java - Apache FOP svg 背景非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510427/

相关文章:

javascript - 无法访问 svg 路径属性

java - 使用 JavaScript 更改 JSP 自定义标记的 JSP 自定义属性值

java - 创建动态 url android

java - 如何在某些自定义 Junit 中执行 "svn diff"作为 Teamcity 构建的一部分

c# - 如何提高该算法的性能?

javascript - d3.js中 ".getComputedTextLength()"的等价方法

java - JPQL/HSQL更新有限制吗?

javascript - knockout observableArray 性能

c++ - Foreach 范围迭代 vector<int> - auto 或 auto&?

jquery - 基思·伍德 JQuery SVG : clone() followed by change() not working