2016-07-21 29 views
1

Ich verwende ApacheFOP, um einige PDFs zu rendern. In dieser PDF zeichne ich ein abgerundetes BOX SVG für die Kanten:ApacheFOP Svg Hintergrund sehr langsam

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

, wo die Top-left.svg Datei ist ziemlich einfach:

<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> 

Das gleiche gilt für oben rechts wiederholt wird, unten - links und unten rechts.

Das Problem ist, dass nach dem Update von ApacheFOP 0.95 auf ApacheFOP 2.1 das Rendering auf dem Produktionsserver ~ 15 Sekunden für jedes SVG dauert. Ich kann das Problem nicht auf meinem Computer reproduzieren.

Sowohl auf meinem Entwickler-Desktop als auch auf dem Produktionsserver läuft Linux.

Gibt es irgendeinen Systemfaktor, der das SVG-Rendering so stark verlangsamen könnte?

Dank

Antwort

1

Die Verzögerung wurde durch das Herunterladen des DTD-Schema jedes SVG verursacht. Es war schwer zu erkennen, weil der Download von Barcode4J und nicht von ApacheFOP selbst durchgeführt wurde. Genauer gesagt war es die BarcodePreloader-Klasse, die versuchte, das SVG zu parsen, seit es vor PreloaderSVG aufgerufen wurde. Wir haben die DTD-Deklaration vorübergehend aus den SVG-Dateien entfernt.