Est-il possible d'incorporer ou de lier un document SVG d'Inkscape à l'intérieur d'un autre?

16

Je voudrais prendre un petit fichier SVG (créé avec Inkscape), et l'intégrer ou le lier dans un autre (plus gros). Lorsqu'il est affiché par un navigateur, j'espère voir le plus petit apparaître dans un espace réservé du plus grand.

C'est possible?

Keith
la source

Réponses:

8

Préférez <use>à <image>comme est ensuite rendu à une résolution fixe et n'échelle pas comme des objets réguliers de données vectorielles dans le document en cours. http://www.w3.org/TR/SVG11/struct.html#ImageElement

Mais l'élément <use>ne peut pas référencer des fichiers SVG entiers, son xlink:hrefattribut est une référence à un élément / fragment dans un document SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). L'élément 'use' peut référencer n'importe quelle ressource locale ou non locale.

exemple:

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"/>

La prise en charge de cette fonctionnalité peut varier pour différents éditeurs / visualiseurs SVG, pour autant que je sache, cela devrait fonctionner (au moins) dans Inkscape, Firefox et Batik.

Berteh
la source
Je pense qu'il vaut la peine de noter qu'Inkscape a ajouté la prise en charge de cette fonctionnalité dans la version 0.91. J'ai ajouté le ppa d'Inkscape pour obtenir cette version sur Mint 17 (14.04 Ubuntu).
Leif Carlsen
@LeifCarlsen Comment exactement? Il semble que je ne trouve pas comment le faire en 0.91
rac2030
1
Je génère des fichiers avec cette fonctionnalité en dehors d'Inkscape et affiche / rend avec Inkscape.
Leif Carlsen
Hmmm ... ok j'ai essayé et échoué avant mais peut-être que je dois essayer plus fort
rac2030
Ha nevermind ... habituellement c'est l'utilisateur qui fait l'erreur ... pour référence j'ai juste oublié d'ajouter la définition xlink ... J'ai ajouté l'espace de noms à la balise svg supérieure et soudain, il a commencé à fonctionner ;-)
rac2030
3

Utilisez l' imageélément et référencez votre fichier SVG. Pour le plaisir, enregistrez les éléments suivants sous 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>

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

Mirzhan Irkegulov
la source
D'une manière ou d'une autre, cela se traduit par un message "Image liée introuvable" avec au moins Inkscape 0.48.4 sous Windows.
mlt
peut-être préfixer le xlink: href avec "./"? travaille pour moi.
Berteh