Hello,
Looks good. Thank you for your help.
Xavid
sugawara wrote:
Hi Xavid,
You need to construct the GVT in advance of calling getBBox().
Try to add following lines immediately after doc.normalize();
UserAgentAdapter ua = new UserAgentAdapter();
DocumentLoader loader = new DocumentLoader(ua);
BridgeContext ctx = new BridgeContext(ua, loader);
ctx.setDynamicState(BridgeContext.DYNAMIC);
GVTBuilder builder = new GVTBuilder();
GraphicsNode gvt = builder.build(ctx, doc);
Hope it helps.
Shin
-----Original Message-----
From: Xavid Pretzer [mailto:[EMAIL PROTECTED]
Sent: Thursday, June 08, 2006 12:02 PM
To: [email protected]
Subject: Problem Obtaining Dimensions of Text Regions
Hello,
I've recently been trying to use Batik to do some batch processing on
some SVG files. Part of what I'm trying to do involves finding the
positions of various text and path elements. However, when I try to get
the bounding box of elements, they always return null. Looking online,
I think I might need some sort of context, but I was unable to figure
out how to generate it properly. Thank you in advance for your help.
I'm using Java 5 on Japanese Windows XP with the latest standard Batik
from the download page.
Here's some example code that has the problem I'm encountering. It
simply tries to load an SVG file and find out the bounding boxes of all
the text elements in it. When I try it with various SVG files, it only
outputs nulls.
import static
org.apache.batik.dom.svg.SVGDOMImplementation.SVG_NAMESPACE_URI;
import java.io.File;
import java.io.IOException;
import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
import org.apache.batik.util.XMLResourceDescriptor;
import org.w3c.dom.NodeList;
import org.w3c.dom.svg.SVGDocument;
import org.w3c.dom.svg.SVGTextElement;
public class BatikTestCase {
public static void main(String[] args) {
SVGDocument doc;
try {
String parser =
XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new
SAXSVGDocumentFactory(parser);
doc = f.createSVGDocument(new
File(args[0]).toURI().toString());
doc.normalize();
NodeList nodes =
doc.getElementsByTagNameNS(SVG_NAMESPACE_URI,
"text");
for (int lcv = 0; lcv < nodes.getLength(); lcv++) {
SVGTextElement ste =
(SVGTextElement)nodes.item(lcv);
System.out.println(ste.getBBox());
}
} catch (IOException ex) {
System.exit(1);
}
}
}
Thanks,
Xavid Pretzer
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]