import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.DocumentLoader;
import org.apache.batik.bridge.GVTBuilder;
import org.apache.batik.bridge.UserAgent;
import org.apache.batik.bridge.UserAgentAdapter;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.gvt.GraphicsNode;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.svg.SVGLocatable;
import org.w3c.dom.svg.SVGRect;

public class NoRenderingExample {

    public static void main(String[] args) {
        DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
        String SVGNS = "http://www.w3.org/2000/svg";
        Document doc = impl.createDocument(SVGNS, "svg", null);
        Element text = doc.createElementNS(SVGNS, "text");
        text.setAttributeNS(null, "x", "100");
        text.setAttributeNS(null, "y", "100");
        text.appendChild(doc.createTextNode("The text here"));
        doc.getDocumentElement().appendChild(text);

        UserAgent ua = new UserAgentAdapter();
        DocumentLoader loader = new DocumentLoader(ua);
        BridgeContext ctx = new BridgeContext(ua, loader);
        ctx.setDynamicState(BridgeContext.DYNAMIC);

        GVTBuilder builder = new GVTBuilder();
        GraphicsNode rootGN = builder.build(ctx, doc);

        SVGRect bbox = ((SVGLocatable) text).getBBox();
        System.out.println
            ("(" + bbox.getX() + "," + bbox.getY() + ","
                 + bbox.getWidth() + "," + bbox.getHeight() + ")");
    }
}

