Czy można osadzić lub połączyć jeden dokument SVG inkscape w innym?

16

Chciałbym wziąć jeden mały plik SVG (utworzony za pomocą Inkscape) i osadzić go lub połączyć z innym (większym) plikiem. Wyświetlany przez przeglądarkę mam nadzieję, że mniejszy pojawi się w jakimś symbolu zastępczym większego.

Czy to możliwe?

Keith
źródło

Odpowiedzi:

8

Wolę <use>aby <image>jak później staje się w stałej rozdzielczości i nie skalowania jak zwykłe obiekty wektorowe zrobić w bieżącym dokumencie.http://www.w3.org/TR/SVG11/struct.html#ImageElement

Ale element <use>nie może odwoływać się do całych plików SVG, jego xlink:hrefatrybutem jest odwołanie do elementu / fragmentu w dokumencie SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Element „use” może odwoływać się do dowolnego lokalnego lub nielokalnego zasobu.

przykład:

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

Obsługa tej funkcji może być różna dla różnych edytorów / przeglądarek SVG, o ile wiem, że powinna działać (przynajmniej) w Inkscape, Firefox i Batik.

Berteh
źródło
Myślę, że warto zauważyć, że Inkscape dodał obsługę tej funkcji w wersji 0.91. Dodałem ppa Inkscape, aby uzyskać tę wersję na Mint 17 (14.04 Ubuntu).
Leif Carlsen,
@LeifCarlsen Jak dokładnie? Wydaje mi się, że nie potrafię tego zrobić w 0.91
rac2030 24.01.16
1
Generuję pliki za pomocą tej funkcji poza Inkscape i przeglądam / renderuję za pomocą Inkscape.
Leif Carlsen
Hmmm ... ok Próbowałem i nie udało mi się to wcześniej, ale może muszę spróbować bardziej
rac2030 30.01.2016
Ha nevermind ... zwykle to użytkownik popełnia błąd ... dla odniesienia Po prostu zapomniałem dodać definicję xlink ... Dodałem przestrzeń nazw do górnego tagu svg i nagle zaczęło działać ;-)
rac2030
3

Użyj imageelementu i odwołaj się do pliku SVG. Dla zabawy zapisz następujące dane 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>

Źródło: /programming/5451135/embed-svg-in-svg/5451238#5451238

Mirzhan Irkegulov
źródło
W jakiś sposób powoduje to komunikat „Nie znaleziono powiązanego obrazu” z programem Inkscape 0.48.4 przynajmniej w systemie Windows.
mlt
może poprzedzić xlink: href przez „./”? pracuje dla mnie.
Berteh