Можно ли встраивать или связывать один SVG-документ inkscape с другим?

16

Я хотел бы взять один небольшой файл SVG (созданный с помощью Inkscape) и вставить или связать его с другим (большим) файлом. Когда я показываю браузер, я надеюсь увидеть меньший внутри некоторого заполнителя большего.

Является ли это возможным?

Кит
источник

Ответы:

8

Предпочитают , <use>чтобы , <image>как позже оказывается при фиксированном разрешении и не масштабируется , как обычные векторные объекты сделать в текущем документе. http://www.w3.org/TR/SVG11/struct.html#ImageElement

Но элемент <use>не может ссылаться на все файлы SVG, его xlink:hrefатрибут является ссылкой на элемент / фрагмент в документе SVG ( http://www.w3.org/TR/SVG11/struct.html#UseElement ). Элемент 'use' может ссылаться на любой локальный или нелокальный ресурс.

пример:

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

Поддержка этой функции может отличаться для разных редакторов / зрителей SVG, насколько я знаю, она должна работать (по крайней мере) в Inkscape, Firefox и Batik.

Berteh
источник
Думаю, стоит отметить, что Inkscape добавил поддержку этой функции в выпуске 0.91. Я добавил Inkscape ppa, чтобы получить эту версию на Mint 17 (Ubuntu 14.04).
Лейф Карлсен
@LeifCarlsen Как именно? Я, кажется, не найти, как это сделать в 0,91
rac2030
1
Я генерирую файлы с этой функцией вне Inkscape и просматриваю / рендеринг с Inkscape.
Лейф Карлсен
Хммм ... хорошо, я пытался и потерпел неудачу раньше, но, возможно, мне нужно стараться
изо всех сил
Не берите в голову ... обычно это пользователь, который делает ошибку ... для справки, я просто забыл добавить определение xlink ... Я добавил пространство имен в верхний тег svg, и вдруг оно начало работать ;-)
rac2030
3

Используйте imageэлемент и укажите ваш файл SVG. Для развлечения сохраните следующее как 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>

Источник: /programming/5451135/embed-svg-in-svg/5451238#5451238

Миржан Иркегулов
источник
Каким-то образом это приводит к сообщению «Связанное изображение не найдено», по крайней мере, с Inkscape 0.48.4 в Windows.
млт
может быть префикс xlink: href с "./"? работает для меня.
Бертех