Hello, I have a general question ! I would like to print an svg that is currently visible on the screen. To do that i'am cloning the original svg document with that code : Document docOrg = svgDoc; // original document
DOMImplementation impl = docOrg.getImplementation(); Document docNew; // new document docNew = impl.createDocument("http://www.w3.org/2000/svg", "svg", null); docNew.replaceChild(docNew.importNode(docOrg.getDocumentElement(), true), docNew.getDocumentElement()); SVGDocument doc = (SVGDocument) docNew; ((AbstractDocument) doc).setDocumentURI(svgDoc.getURL()); Thats the easy part. But there is an own Animation ( a Thread that sets some Elements visible and invisible to get a blink animation) ! In the print this elements should be visible! So i copy the original svg at anytime and set all elements to visible again. Element[] elements = ag.getAnimation().getAllElements(true); if (elements != null || elements.length > 0) { logger.debug("Cleaning up cloned document for printing (e.g. current blinking elements => visible) ..."); logger.debug("Will clean up " + elements.length + " elements !"); for (int i = 0; i < elements.length; i++) { String id = elements[i].getAttribute("id"); Element elt = doc.getElementById(id); elt.setAttributeNS(null, "visibility", "visible"); } logger.debug("Cleaned up cloned document for printing."); } But this is not done in the UpdateManagerThread ! because i will not wait with invokeAndWait ?! Could this be a problem ? I mean after that i print the copied document and then i gets garbage collected => so i don't do anything with it ? mfg Michael Kerschbaum