# Batik - Links einbauen



## SaschaLR (1. Mrz 2006)

Hallo!

Nachdem ich gestern gelernt habe, dass Batik eine prima Sache ist, wenn man Java mit SVG verheiraten will, musste ich feststellen, dass ich noch kein Vorstellung davon habe, wie ich, nachdem ich auf einem SVGGraphics2D meine Daten gezeichnet habe, dort noch Hyperlinks einbauen kann.

Ich vermute mal ganz stark, dass sich das nciht während des Zeichnens machen lässt. Wie denn dann? Und bitte mehr als einen Fingerzeig posten, es sei denn er zeigt genau auf mein Problemchen 

Dank und Gruß,
Sascha


----------



## AlArenal (1. Mrz 2006)

Nö, über SVGGraphics2D geht das nicht, ist im Grunde als Möglichkeit gedacht, mal was graphisches zu exportieren. Wenn du direkt was an den SVG-Daten ändern willst, musst du über XML darin arbeiten.

Du solltest dir mal die Doku reinziehen, dafür isse ja da 
Speziell du diesem Thema: http://xmlgraphics.apache.org/batik/domapi.html


----------



## Bleiglanz (2. Mrz 2006)

warum "zeichnest" du damit, du kannst doch das zugehörige XML auch programmatisch erzeugen und damit den Hyperlink einbauen?


----------



## SaschaLR (2. Mrz 2006)

@Bleiglanz: Es gibt keinen tiefergehenden Grund; ich mags einfach mehr ... 

@AlArenal: Kannst du mir evtl. ein wenig auf die Spünge helfen? Die "Doku" zu dem Thema hilft mir nicht so ganz weiter. Ich hab zwar schon mal XML erstellt und geparst ohne Schwierigkeiten, aber hier komme ich noch nicht so recht weiter...

Was ich denke, was ich dann schaffen muss ist:
a) Das richtige Objekt/Gruppe im Baum ausfindig machen (wie weiß ich auch noch nciht so recht...)
b) Das Objekt aus dem Baum entfernen; Stelle merken
c) Anker erzeuegn
d) Objekt an den Anker hängen
e) Anker an der Stelel aus der ich das Objekt genommen habe einhängen
f) fertig

Ist das Vorgehen so richtig? Oder gibts schon Methoden die ich zum Austauschen oder um einen Tag drumherumzuwickeln nutzen kann?

Vielen Dank,
Sascha


----------



## SaschaLR (2. Mrz 2006)

Ich probiere es grade auch mal mit der DOM-Variante ... da merke ich grade, dass ich keine Ahnung habe, wie ich an dieser Stelle den Baum in eine XML-Datei verwandeln kann... 

Ich habe bisher nur jdom verwendet und dort gibt es den xmloutputter ... sowas habe ich aber beim org.w3c.dom noch nicht gefunden ...

Kann mir da jemand nen Tip geben?
Danke


----------



## SaschaLR (2. Mrz 2006)

Wie es halt so ist...kaum gepostet habe ich den xmlserializer gefunden


----------



## AlArenal (2. Mrz 2006)

Hab hier etwas Beispielcode aus nem kleinen Test, den ich mal gemacht habe:


```
Document doc = svgImage2.getDOMDocument();
		   
		    NodeList elements = doc.getDocumentElement().getElementsByTagName("*");
		    for (int i = 0; i < elements.getLength(); i++) {
		    	Node item = elements.item(i);
		    	if (item.getNodeType() == Node.ELEMENT_NODE) {
		            Element element = (Element) item;
		            System.out.println(element.getTagName());
		            if (element.getTagName().equals("rect")) {
		            	if (element.getAttribute("id").equals("node"))
		            		element.setAttribute("style","fill:#FF0000;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.0000000;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000");
		            }
		    	} 
		    }
```

Wobei svgImage2 ne Instanz einer speziellen Klasse ist, die hier aber fürs eigentliche Problem unerheblich ist. Der Code manipuliert den Code einer zuvor von mir mit Inkscape erstellten SVG-Testdatei, in der ich z.B. ein Rechteck reingesetzt hatte, dessen ID ich auf "node" gesetzt hatte.

Wenn du wirklich unbedingt SVG benutzten willst, wirst du aber kaum den Weg gehen können Java2D nach SVG zu wandeln und da noch präzise drin zu arbeiten, was einzufügen, etc... Da wärst du am besten beraten komplett über SVG zu arbeiten.


----------



## SaschaLR (2. Mrz 2006)

Ja, ich denke langsam auch es ist keine gute Idee so wie bisher weiter zu machen. 

Eine ID kann ich den Elementen nicht geben wenn ich sie zeichne und damit ist wohl auch jede Möglichkeit sie im Baum wiederzfinden dahin.

Ich habe auch noch so meine Probleme vom xmlserializer einen vernünftigen Output zu bekommen. Das Bild hat die richtige Größe ist aber immer komplett schwarz :-(

Danke für die Hifle so weit!


----------



## SaschaLR (2. Mrz 2006)

Ok,.. habe auch das hinbekommen!

Dummheitsfehler


----------

