Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
We export svg files to PDF. The code looks like this: http://pastebin.com/y0bZJMK7
It seems that Batik cannot operate svg files with tags <pattern> without children.
There are two svg-files:
http://pastebin.com/Wd47nhCu - this one works fine
http://pastebin.com/6yseBWmQ - and this one causes an exception
org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
null:-1
The URI "#p1"
specified on the element <pattern> is invalid
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
at org.apache.fop.svg.PDFTranscoder.transcode(PDFTranscoder.java:193)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
According to W3C site (http://www.w3.org/TR/SVG/pservers.html#Patterns), "If this element has no children, and the referenced element does (possibly due to its own 'xlink:href' attribute), then this element inherits the children from the referenced element."
Browsers (Chrome, Firefox, IE) show both svg files correctly, but Batik throws this exception while processing the second file.
Additional info: exception occurs in class org.apache.batik.util.ParsedURLData, in method buildURL(), in the last line: return new URL(toString());
Method toString() returns "#p1" in our case, and java.net.URL class doesn't want to consider it as correct URL.