You may be accessing the document before the gvt builder is complete... try
adding a listener and then loading the doc. Begin your work when the
listener is called...


        canvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {
            @Override
            public void gvtBuildCompleted(GVTTreeBuilderEvent e) {

              // do stuff here

            }
        });

On Wed, Sep 12, 2012 at 6:45 PM, Thomas DeWeese
<thomas.dewe...@gmail.com> wrote:

Hi Ali,
>         Hmm, I think we misunderstood.  You have an SVG document and you
> can view most of it in the JSVGCanvas but the embedded png's don't show up.
> In that case I think you need to send a sample document that shows the
> problem for you because they should just show up (there are examples
> included in batik like 'sample/tests/spec/structure/dataProtocol.svg'.
>
>         Thomas
>
> On Sep 12, 2012, at 12:11 PM, ali can wrote:
>
> > Please excuse my ignorance but I really cannot get a grip of this. Here
> is my
> > code, I can see svg, but no embed image. What is wrong?
> > Thanks
> >
> >        canvas = new JSVGCanvas();
> >        getContentPane().add(canvas);
> >
> >        userAgent = new UserAgentAdapter();
> >        ctx       = new BridgeContext(userAgent);
> >        builder   = new GVTBuilder();
> >        try {
> >            // Parse the barChart.svg file into a Document.
> >            String parser = XMLResourceDescriptor.getXMLParserClassName();
> >            SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
> >            URL url = new URL(getCodeBase(), "embedData.svg");
> >            doc = f.createDocument(url.toString());
> >
> >            svg = doc.getDocumentElement();
> >
> >
> >            NodeList l =
> >            svg.getElementsByTagName("image")     ;
> >            for (int i = 0; i < l.getLength(); i++)
> >            {
> >                Element n = (Element)l.item(i)   ;
> >                String image =
> >                        n.getAttributeNS(XMLConstants.XLINK_NAMESPACE_URI,
> > "href");
> >                String t = n.getAttributeNS(null, SVG_WIDTH_ATTRIBUTE);
> >                int width = Integer.parseInt(t);
> >                int height = Integer.parseInt(n.getAttributeNS(null,
> > SVG_HEIGHT_ATTRIBUTE));
> >                String id = "image" + Integer.toString(i);
> >
> >                // Create and initialize the new image element
> >                Element imageElement =
> > doc.createElementNS(SVG_NAMESPACE_URI,
> >                        SVG_IMAGE_TAG);
> >                imageElement.setAttributeNS(null,
> > XMLConstants.XML_ID_ATTRIBUTE,
> >                        id);
> >                imageElement.setAttributeNS(null, SVG_WIDTH_ATTRIBUTE,
> >                        Integer.toString(width));
> >                imageElement.setAttributeNS(null, SVG_HEIGHT_ATTRIBUTE,
> >                        Integer.toString(height));
> >
> > imageElement.setAttributeNS(XMLConstants.XLINK_NAMESPACE_URI,
> > XMLConstants.XLINK_HREF_QNAME,
> >                        "data::image/PNG;base64," +
> > base64Encode(image.getBytes()));
> >                doc.appendChild(imageElement);
> >                svg.removeChild(n);
> >            }
> >        } catch (Exception ex) {
> >        }
> >
> >
> >
> >
> >
> > --
> > View this message in context:
> http://batik.2283329.n4.nabble.com/How-to-render-embedded-png-tp4655236p4655244.html
> > Sent from the Batik - Users mailing list archive at Nabble.com.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
> > For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
> For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org
>
>

Reply via email to