È possibile incorporare o collegare un documento SVG inkscape all'interno di un altro?


16

Vorrei prendere un piccolo file SVG (creato con Inkscape) e incorporarlo o collegarlo in un altro (più grande). Quando viene visualizzato da un browser, spero di vedere quello più piccolo apparire all'interno di un segnaposto di quello più grande.

È possibile?

Risposte:


8

Preferisco <use>per <image>come poi è reso ad una risoluzione fissa e non scala come oggetti vettoriali regolari fanno nel documento corrente.http://www.w3.org/TR/SVG11/struct.html#ImageElement

Ma l'elemento <use>non può fare riferimento a interi file SVG, il suo xlink:hrefattributo è un riferimento a un elemento / frammento all'interno di un documento SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). L'elemento 'use' può fare riferimento a qualsiasi risorsa locale o non locale.

esempio:

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

Il supporto di tale funzione può variare a seconda dei diversi editor / visualizzatori SVG, per quanto ne so dovrebbe funzionare (almeno) in Inkscape, Firefox e Batik.


Penso che valga la pena notare che Inkscape ha aggiunto il supporto per questa funzione nella versione 0.91. Ho aggiunto Inkscape ppa per ottenere questa versione su Mint 17 (14.04 Ubuntu).
Leif Carlsen,

@LeifCarlsen Come esattamente? Mi sembra di non trovare il modo di farlo in 0.91
rac2030,

1
Generare file con questa funzione all'esterno di Inkscape e visualizzare / renderizzare con Inkscape.
Leif Carlsen,

Hmmm ... ok ho provato e fallito prima, ma forse ho bisogno di provare di più
rac2030

Ah, non importa ... di solito è l'utente che fa l'errore ... per riferimento ho dimenticato di aggiungere la definizione di xlink ... Ho aggiunto lo spazio dei nomi al tag svg in alto e improvvisamente ha iniziato a funzionare ;-)
rac2030

3

Usa l' imageelemento e fai riferimento al tuo file SVG. Per divertimento, salva quanto segue 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>

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


In qualche modo questo porta al messaggio "Immagine collegata non trovata" almeno con Inkscape 0.48.4 su Windows.
mlt

forse prefisso xlink: href con "./"? per me va bene.
Berteh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.