[prev in list] [next in list] [prev in thread] [next in thread]
List: fop-dev
Subject: [jira] [Created] (FOP-2489) An SVG file using markers is not rendered by FOP 2.0
From: "Hussein Shafie (JIRA)" <jira () apache ! org>
Date: 2015-06-16 17:21:02
Message-ID: JIRA.12838223.1434475233000.85770.1434475262337 () Atlassian ! JIRA
[Download RAW message or body]
Hussein Shafie created FOP-2489:
-----------------------------------
Summary: An SVG file using markers is not rendered by FOP 2.0
Key: FOP-2489
URL: https://issues.apache.org/jira/browse/FOP-2489
Project: FOP
Issue Type: Bug
Affects Versions: 2.0
Environment: Linux; Java 1.6 64-bit (not relevant).
Reporter: Hussein Shafie
An SVG file using markers is not rendered by FOP 2.0
----------------------------------------------------
How to reproduce the problem (see attached files)
fop -fo __doc.fo -pdf __doc.pdf
Running this command reports:
---
SEVERE: SVG graphic could not be built. Reason: \
org.apache.batik.bridge.BridgeException: resources/resources/header_layout.svg (No \
such file or directory)
org.apache.batik.bridge.BridgeException: resources/resources/header_layout.svg (No \
such file or directory)
at org.apache.batik.bridge.BridgeContext.getReferencedNode(Unknown Source)
at org.apache.batik.bridge.BridgeContext.getReferencedElement(Unknown Source)
at org.apache.batik.bridge.PaintServer.convertMarker(Unknown Source)
at org.apache.batik.bridge.PaintServer.convertMarkers(Unknown Source)
at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createMarkerPainter(Unknown \
Source)
at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(Unknown \
Source)
at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(Unknown \
Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
at org.apache.fop.render.pdf.PDFImageHandlerSVG.handleImage(PDFImageHandlerSVG.java:103)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:249)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:205)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingImageHandler(AbstractIFPainter.java:170)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingURI(AbstractIFPainter.java:292)
at org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:173)
at org.apache.fop.render.intermediate.IFRenderer.drawImage(IFRenderer.java:1295)
at org.apache.fop.render.intermediate.IFRenderer.renderImage(IFRenderer.java:1282)
at org.apache.fop.render.AbstractRenderer.renderInlineViewport(AbstractRenderer.java:858)
---
The expected result is EXPECTED__doc.pdf
My workaround:
To resolve URLs such as "marker-start:url(#TriangleInM)", Batik 1.8 needs
to know the URL of the SVG document it processes.
Therefore in org/apache/fop/apps/FOUserAgent.java, I've replaced:
---
public StreamSource resolveURI(String uri) {
// TODO: What do we want to do when resources aren't found??? We also need to \
remove this // method entirely
try {
// Have to do this so we can resolve data URIs
StreamSource src = new StreamSource(resourceResolver.getResource(uri));
src.setSystemId(uri);
return src;
} catch (URISyntaxException use) {
return null;
} catch (IOException ioe) {
return null;
}
}
---
by:
---
public StreamSource resolveURI(String uri) {
// TODO: What do we want to do when resources aren't found??? We also need to \
remove this // method entirely
try {
// Have to do this so we can resolve data URIs
StreamSource src = new StreamSource(resourceResolver.getResource(uri));
// A systemId is always expected to be absolute.
// Anyway, without this, SVG files using markers
// (e.g. marker-start:url(#TriangleInM)) cannot be rendered.
if (!uri.startsWith("data:")) {
uri = resourceResolver.getBaseURI().resolve(uri).toASCIIString();
}
src.setSystemId(uri);
return src;
} catch (URISyntaxException use) {
return null;
} catch (IOException ioe) {
return null;
}
}
---
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic