Please see Wiki: http://wiki.apache.org/xmlgraphics-batik/BootSvgAndCssDom
On Wed Jan 07 2015 at 10:26:07 PM Craig Ugoretz <craigugore...@gmail.com> wrote: > HERE IS THE SVG FILE: > > import java.awt.Shape; > import java.io.File; > import java.io.IOException; > > import org.apache.batik.bridge.*; > import org.apache.batik.dom.svg.SAXSVGDocumentFactory; > import org.apache.batik.ext.awt.geom.PathLength; > import org.apache.batik.gvt.GraphicsNode; > import org.apache.batik.gvt.ShapeNode; > import org.apache.batik.util.XMLResourceDescriptor; > import org.w3c.dom.svg.*; > import org.w3c.dom.*; > > public class RenderableSVG { > > public static void main(String[] args) { > SVGDocument doc = null; > String rtFileName = "C:\\Users\\Craig\\Google > Drive\\eclipse-workspace2\\Find Length Of Shape By ID\\drawing.svg"; > > try { > String urlString = new > File(rtFileName).getAbsoluteFile().toURL().toString(); > > String parser = XMLResourceDescriptor.getXMLParserClassName(); > SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser); > doc = (SVGDocument) f.createDocument(urlString); > } catch (IOException ex) { > System.out.println("SVG file could not opened"); > } > > UserAgent userAgent=new UserAgentAdapter(); > DocumentLoader loader=new DocumentLoader(userAgent); > BridgeContext ctx=new BridgeContext(userAgent,loader); > System.out.println(ctx); > > Element el = doc.getElementById("ABC"); > System.out.println(el); > > GraphicsNode gn = ctx.getGraphicsNode(el); > System.out.println(gn); > > Shape shape = ((ShapeNode)gn).getShape(); > PathLength pathLength = new PathLength(shape); > System.out.println(pathLength.lengthOfPath()); > } > } > > HERE IS THE SVG FILE: > > <?xml version="1.0" encoding="UTF-8" standalone="no"?> > <svg > xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:cc="http://creativecommons.org/ns#" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:svg="http://www.w3.org/2000/svg" > xmlns="http://www.w3.org/2000/svg" > xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" > xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" > style="fill-opacity:1; color-rendering:auto; color-interpolation:auto; > stroke:black; text-rendering:auto; stroke-linecap:square; > stroke-miterlimit:10; stroke-opacity:1; shape-rendering:auto; fill:black; > stroke-dasharray:none; font-weight:normal; stroke-width:1; > font-family:'Dialog'; font-style:normal; stroke-linejoin:miter; > font-size:12; stroke-dashoffset:0; image-rendering:auto;" > width="200" > height="200" > id="svg2" > version="1.1" > inkscape:version="0.48.4 r9939" > sodipodi:docname="drawing.svg"> > <metadata > id="metadata13"> > <rdf:RDF> > <cc:Work > rdf:about=""> > <dc:format>image/svg+xml</dc:format> > <dc:type > rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> > </cc:Work> > </rdf:RDF> > </metadata> > <sodipodi:namedview > pagecolor="#ffffff" > bordercolor="#666666" > borderopacity="1" > objecttolerance="10" > gridtolerance="10" > guidetolerance="10" > inkscape:pageopacity="0" > inkscape:pageshadow="2" > inkscape:window-width="640" > inkscape:window-height="480" > id="namedview11" > showgrid="false" > inkscape:zoom="1.18" > inkscape:cx="100" > inkscape:cy="100" > inkscape:window-x="0" > inkscape:window-y="0" > inkscape:window-maximized="0" > inkscape:current-layer="svg2" /> > <!--Generated by the Batik Graphics2D SVG Generator--> > <defs > id="genericDefs" /> > <g > id="g5"> > <g > id="g7"> > <rect > x="0" > width="100" > height="100" > y="0" > style="stroke:none" > id="ABC" /> > </g> > </g> > </svg> > > HERE IS WHAT THE PROGRAM PRINTS OUT: > > org.apache.batik.bridge.BridgeContext@65ab90e2 > org.apache.batik.dom.svg.SVGOMRectElement@62b51993 > null > Exception in thread "main" java.lang.NullPointerException > at RenderableSVG.main(RenderableSVG.java:41) > > WHY IS THE VARIABLE gn SET TO null? > > SHOULDN'T gn BE SET TO THE OBJECT CORRESPONDING TO THE ELEMENT WITH ID SET > TO "ABC"? > > THE LENGTH OF THE RECTANGLE PATH SHOULD BE 400. >