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?

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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.