Ist es möglich, ein inkscape SVG-Dokument in ein anderes einzubetten oder zu verknüpfen?

16

Ich möchte eine kleine SVG-Datei (erstellt mit Inkscape) nehmen und sie in eine andere (größere) einbetten oder verknüpfen. Bei der Anzeige in einem Browser hoffe ich, dass der kleinere in einem Platzhalter des größeren Platzhalters angezeigt wird.

Ist es möglich?

Keith
quelle

Antworten:

8

Dies ist vorzuziehen <use>, <image>da letztere mit einer festen Auflösung gerendert und nicht wie normale Vektorobjekte im aktuellen Dokument skaliert werden. http://www.w3.org/TR/SVG11/struct.html#ImageElement

Das Element <use>kann jedoch nicht auf ganze SVG-Dateien verweisen. Das xlink:hrefAttribut verweist auf ein Element / Fragment in einem SVG-Dokument ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Das Element 'use' kann auf jede lokale oder nicht lokale Ressource verweisen.

Beispiel:

MyLibrary.svg:
<svg (...)>
        <rect x="0" y="0" width="200" inkscape:label="upper-left-blue"
              style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:none"
              id="upper-left-blue" height="200"/>

UseParts.svg:
        <use x="0" y="0" width="400" xmlns:xlink="http://www.w3.org/1999/xlink"
             xlink:href="MyLibrary.svg#upper-left-blue" xlink:type="simple"
             xlink:actuate="onLoad" height="400" id="use8793" xlink:show="embed"/>

Die Unterstützung dieser Funktion kann für verschiedene SVG-Editoren / -Betrachter variieren, soweit ich weiß, dass sie (zumindest) in Inkscape, Firefox und Batik funktionieren sollte.

Berteh
quelle
Ich halte es für erwähnenswert, dass Inkscape diese Funktion in Version 0.91 unterstützt. Ich habe das Inkscape ppa hinzugefügt, um diese Version auf Mint 17 (14.04 Ubuntu) zu bekommen.
Leif Carlsen
@LeifCarlsen Wie genau? Ich scheine nicht zu finden, wie es in 0,91
rac2030
1
Ich generiere Dateien mit dieser Funktion außerhalb von Inkscape und zeige / rendere mit Inkscape.
Leif Carlsen
Hmmm ... ok, ich habe es versucht und bin gescheitert, aber vielleicht muss ich mich noch mehr
anstrengen
Ha nevermind ... normalerweise ist es der Benutzer, der den Fehler macht ... als Referenz habe ich nur vergessen, die Xlink-Definition hinzuzufügen ... Ich habe den Namespace zum oberen Svg-Tag hinzugefügt und plötzlich fing es an zu funktionieren ;-)
rac2030
3

Verwenden Sie das imageElement und verweisen Sie auf Ihre SVG-Datei. Speichern Sie zum Spaß Folgendes als recursion.svg:

<svg width="100%" height="100%" viewBox="-100 -100 200 200" version="1.1"
     xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <circle cx="-50" cy="-50" r="30" style="fill:red" />
  <image x="10" y="20" width="80" height="80" xlink:href="recursion.svg" />
</svg>

Quelle: /programming/5451135/embed-svg-in-svg/5451238#5451238

Mirzhan Irkegulov
quelle
Irgendwie führt dies zu der Meldung "Verknüpftes Bild nicht gefunden" mit Inkscape 0.48.4 unter Windows.
mlt
vielleicht den xlink: href mit "./" voranstellen? funktioniert bei mir.
Berteh