Изменить атрибут viewbox в svg, экспортированном иллюстратором

У меня есть файл SVG с viewBox="-155.7 -99 510 510". Я считаю, что это сместило пути в предварительном просмотре Mac OS X на -155,7 -99. когда я открываю SVG в Illustrator, пути вообще не смещаются. как мне экспортировать этот svg так, чтобы:

  1. ViewBox="0 0 510 510"
  2. и все пути добавили от множества -155,7 -99

Я попытался изменить положение монтажной области, но источник окна просмотра никогда не равен 0,0.

Ответы (7)

Я сталкивался с этой проблемой несколько раз, и единственная вещь, которая когда-либо работала для меня, чтобы надежно сбросить поле просмотра SVG точно до 0, 0 при экспорте из Illustrator, - это создать новый пустой документ и скопировать и вставить в него иллюстрацию. .

Верхний левый угол этой нетронутой монтажной области по умолчанию будет экспортироваться как точка 0, 0 окна просмотра. Используйте интеллектуальные направляющие ( cmd-u) или установите alignокно, Align to Artboardесли вам нужно, чтобы ваша иллюстрация начиналась точно с 0, 0.

Вы можете безопасно изменить размер монтажной области из нижнего правого угла, но все пойдет не так, если вы переместите верхний левый угол. Перемещение верхнего левого угла монтажных областей или импорт SVG-файлов в AI, по-видимому, вызывает какое-то странное внутреннее разъединение между линейками, монтажными областями и какой-то невидимой секретной исходной точкой области просмотра, известной только Illustrator.


УВЕРЕН, как и в большинстве случаев, связанных с Интернетом или новыми технологиями, подход Adobe к SVG заключался в том, чтобы собрать что-то грубо вместе, чтобы они могли похвастаться этим в пресс-релизе, а затем оставить его глючным, незавершенным и нелюбимым, притворяясь, что это не так. существует и продолжается, как в 1998 году.

Это не работает для меня с помощью Illustrator CC. Я также пробовал использовать нестандартный размер Fit Artboard to Artwork. Окончательный SVG всегда имеет центрированное окно просмотра.
Странно - точно может работать в CS6. Должно быть, что-то изменилось между CS6 и CC — хотя кажется странным изменением.
@user568458 user568458 Это техника, которую я тоже использую, не точная, но очень похожая. Любые преобразования в «Artboard» в Illustrator будут напрямую преобразованы в значения viewbox, измененные при экспорте в SVG. Вы совершенно правы в создании нового документа и копировании всех иллюстраций. Ваш ответ должен быть помечен как правильный +1.
Adobe была большим сторонником SVG, но это было, когда svg зарождался, они ничего не делали в этом направлении в течение нескольких лет после приобретения Macromedia, потому что они хотели, чтобы флэш преуспел.
Я использую Adobe Illustrator CC 18.1.0 и создаю совершенно новый документ, копирую и вставляю свой svg, а затем пересохраняю, кажется, помогает. Я также обязательно проверяю Preserve Illustrator Editing Capabilitiesпри первом сохранении на тот случай, если мне нужно внести дополнительные корректировки, а затем, когда я думаю, что все довольно хорошо, я сохраняю его без него (увеличение размера файла довольно значительно, поэтому вы захотите сделать это)

Я знаю, что это очень поздно для темы, но у меня была такая же проблема, и я сделал следующее.

  1. Откройте SVG в текстовом редакторе и измените атрибут viewBox на 0 0 xy.
  2. Сохраните его и снова откройте в Illustrator.
  3. Обложка теперь будет располагаться за пределами монтажной области — верните ее в положение 0 0.
  4. Сохраните и просмотрите, все должно работать нормально.

Надеюсь, это поможет кому-то еще.

Здравствуйте, Марк, добро пожаловать в GDSE и спасибо за ваш ответ. Если у вас есть какие-либо вопросы, обратитесь в справочный центр или свяжитесь с одним из нас в чате , как только ваша репутация станет достаточной (20). Продолжайте вносить свой вклад и наслаждайтесь сайтом!
Я обнаружил, что добавление width="<W>" height="<H>"в ваш любимый текстовый редактор тега SVG также помогает (где <W>и <H>будут десятичные числа).

Я провел небольшое исследование SVG и, по-видимому, окно просмотра не является элементом, который можно экспортировать через Illustrator. Элемент viewbox совместим только с определенными программами, которые решили использовать этот элемент или манипулировать им. К сожалению, Illustrator не является одним из них.

Если вы сохранили SVG из Illustrator без «Сохранить возможности редактирования Illustrator», вы можете отменить процесс. Какие бы изменения вы ни вносили в данные SVG-файла, они будут отражены в Illustrator, но путем изменения положения и размера монтажной области и слоев для создания псевдоокна просмотра.

На данный момент все, что вы можете сделать, это работа над дизайном в Illustrator и весь дополнительный код для смещения и позиционирования окна просмотра в данных файла. Вы можете создать псевдоокно просмотра, просто изменив ширину монтажной области + высоту/X + Y положение, а затем также изменив атрибуты размера и положения объектов. Но никогда не будет настоящего атрибута окна просмотра, если они не выпустят обновление для Illustrator с редактируемыми функциями окна просмотра.

Немного о формате SVG в Illustrator: Adobe Illustrator Сохранить в формате SVG

Illustrator экспортирует атрибут viewbox, начиная с Illustrator CC (v 17.x).

У меня была очень похожая проблема: созданный ИИ SVG не был центрирован и расширен до полного окна браузера, потому что ИИ постоянно меняет размер монтажной области и забывает о центрировании.

Единственный способ исправить это — выполнить последний шаг ручной обработки в Inkscape.

  • открыть SVG в Inkscape
  • изменить размер холста в разделе «Файл» -> «Свойства документа»
  • измените размер и переместите изображение, выбрав его и введя w, h на панели инструментов.

Наконец, вам нужно снова сохранить SVG, но использовать формат «Оптимизированный SVG» в диалоговом окне «Сохранить как». Появится диалоговое окно для параметров SVG, и вы должны включить «Включить просмотр».

Поскольку все мои SVG представляют собой значки одинакового размера, этот этап обработки занимает всего 1 минуту, так как у меня всегда один и тот же размер холста и объекта. Но да, обидно, что этот шаг вообще нужен и его надо зафиксировать в ИИ.

Я понял это. Окончательно! Есть простой способ сделать это. Вот так:

<svg id="xbox" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 60.7"><title>xbox</title><rect width="200" height="60.68" style="fill:none"/><path d="M195.2,49.2l-11.8-16-11.5,16h-4.8L181.2,30,168.4,12.8h4.8l10.2,14,10.5-14h4.8L185.9,30,200,49.2Zm-90.7,0L90.4,30l12.8-17.2H98.4l-10.5,14-10.3-14H72.8L85.6,30l-14,19.2h4.8l11.5-16,11.8,16Z" style="fill:#0f7c10"/><path d="M131,31.3l-2.2-1.6a8.2,8.2,0,0,0,4.4-7c0-2.6-.9-9.9-12.1-9.9H106.4V28.4h-4.8l-2.9,3.5h7.7V49.2h14.7c8.3,0,13.1-4.2,13.1-10.9a8.6,8.6,0,0,0-3.2-7m-20.5-15h10.6c3.2,0,8,1,8,6.1s-2.9,6-8,6H110.5Zm10.6,29.1H110.5V31.9h10.6c4.1,0,8.9,1.3,8.9,6.4s-5.4,7.1-8.9,7.1m32.3-33.6c-10.3,0-17.3,7.7-17.3,19.2s7,18.8,17.3,18.8,17.5-7.6,17.5-18.8-7.3-19.2-17.5-19.2m0,34.2c-7.7,0-13.1-6.1-13.1-15s5.4-15.3,13.1-15.3S166.8,22,166.8,31s-5.5,15-13.4,15M8.9,8.6h0A31,31,0,0,0,0,30.4,32.5,32.5,0,0,0,6.1,48.9h.3C4.2,41.5,16,24.3,22,16.9h0C11.8,6.4,8.9,8.9,8.9,8.6m42.9,0h0a31,31,0,0,1,8.9,21.8,32.5,32.5,0,0,1-6.1,18.5h-.3c2.2-7-9.6-24.3-15.6-31.6h0C48.9,7,51.8,9.6,51.8,9.3M30.4,0A29.9,29.9,0,0,1,46.3,4.5h0c0,.3,0,.3-.3.3C40.3,3.5,31.3,8.3,30.4,8.9h0C28.1,7.7,19.8,3.2,14.7,4.8a.3.3,0,0,1-.3-.3h0A30,30,0,0,1,30.4,0m0,24.3h0c9.2,7,24.9,24.3,20.1,29.1h0a31.5,31.5,0,0,1-40.3,0h0C5.8,48.6,21.1,31.3,30.4,24.3h0" style="fill:#0f7c10"/></svg>

Проблема заключалась в том, что когда вы экспортируете изображение из Illustrator (как это делают многие), монтажная область не включается в экспортируемый SVG. Пути не на чем основывать свои расчеты.

В моем случае максимальная высота для моих изображений была, 100pxи мне нужно было основывать стили CSS для этих изображений на основе их ширины и высоты. В CSS я использую vwединицы или просто старые 100%, если SVG должен заполнять пространство блока. Это хорошо масштабируется. Таким образом, вам не придется возиться с настройкой ширины и высоты в CSS, чтобы обеспечить правильное отображение.

Я просмотрел каждый логотип, установил высоту 100pxи автоматически рассчитал ширину на основе соотношения сторон. Затем я подогнал монтажную область к логотипу, чтобы удалить неиспользуемое пространство.

Я выбрал прямоугольник, отключил заливку и обводку и убедился, что он имеет тот же размер, что и монтажная область. Поместите этот пустой объект сзади. Теперь, когда вы экспортируете путь, у него будет основа для расчетов.

Чтобы сделать это в коде, вы можете обернуть пути в a rectи установить его ширину и высоту, а затем вы можете установить то viewBoxже самое (сохранить соотношение сторон одинаковым). Как показано в примере выше. Я на самом деле не тестировал это, но я буду тестировать и обновлять.

Я смог исправить это с помощью Inkscape . Похоже, что Illustrator плохо поддерживает файлы SVG.

  1. Откройте файл svg в Inkscape.CTRL + O
  2. Затем создайте новый файлCTRL + N
  3. CTRL + SHIFT + DСвойства документа и отрегулируйте размер монтажной области.3
  4. Выберите и скопируйте svg во вновь созданный файл.
  5. Теперь настройте актив, изменив значения положения и размера. Например, установка положения в качестве источника, а ширины и высоты в качестве размера документа.5
  6. Сохраните новый файл.

1. в Adobe Illustrtor выберите свой путь

2. затем перейдите на панель монтажной области

3. щелкните значок параметров монтажной области

4. На панели предустановок выберите соответствие границам обложки.

5.нажмите ок.

6.результат таков:

7.<viewBox="0 0 407,02 660,98">

8.viewbox minx и miny устанавливает значение 0 0 без перевода