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]

Reply via email to