Silviu Julean created BATIK-1287:
------------------------------------

             Summary: BridgeException for SVGs with clip-path="url(...)" in JAR 
files
                 Key: BATIK-1287
                 URL: https://issues.apache.org/jira/browse/BATIK-1287
             Project: Batik
          Issue Type: Bug
          Components: SVG DOM
    Affects Versions: 1.13
            Reporter: Silviu Julean


BATIK-1127 was fixed (in FOP-2489) by modifying 
{{ParsedURLDefaultProtocolHandler}}.

No fix was applied to {{ParsedURLJarProtocolHandler}}, therefore the issue 
still reproduces with SVG files inside of JAR files.

*Steps to reproduce*

1. Embed a SVG file with an anchor clip path inside a JAR file.
 2. Parse the document:
{noformat}
new 
SAXSVGDocumentFactory(parser).createDocument("jar:file:/outerpath/app.jar!/innerpath/file.svg",
 inputStream);{noformat}
3. Transcode it to PDF using FOP:
{noformat}
new PDFTranscoder().transcode(new TranscoderInput(document), ...);{noformat}
*Expected results*

The PDF file is generated as it would be if the document URL was a not a JAR 
url.

*Actual results*

The anchor URL incorrectly resolves to:
{noformat}
jar:file:/outerpath/app.jar!/innerpath/#anchor-id{noformat}
Note the missing SVG file name.

{{batik-bridge}} then attempts to load an SVG document with this URL, resulting 
in a {{TranscoderException}} caused by a "Premature end of file" 
{{EOFException}}.

*Workaround*

1. Make a copy of {{ParsedURLJarProtocolHandler}}. The copy must still extend 
{{ParsedURLDefaultProtocolHandler}}.
 2. At the beginning of {{parseURL}}, return {{super.parseUrl(baseURL, 
urlStr)}} if the {{urlStr}} starts with "#".
 3. Create {{META-INF/services/org.apache.batik.util.ParsedURLProtocolHandler}} 
containing the full class name of the patched class.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to