Как сохранить идентификаторы элементов при редактировании SVG в Adobe Illustrator?

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

Можно ли заставить Illustrator хранить мои идентификаторы?

2 ответа

Решение

Я пытаюсь использовать Illustrator с svg уже несколько лет, но с переменным успехом. Обычно он сохраняет идентификаторы, если вы сохраняете их в наиболее разрешающем формате (SVG 1.1); но он действительно любит переписывать различные элементы SVG в свой собственный образ мышления о них. Я настоятельно рекомендую не использовать Illustrator для редактирования файлов SVG, в которых вы хотите иметь чистую и аккуратную разметку. Вместо этого вы можете использовать Inkscape.

Так что я знаю, что этот вопрос задавали давно. Так как Inkscape довольно медленно работает с x11 на Mac, я решил опубликовать здесь свое решение на случай, если оно кому-нибудь поможет.

Если у вас установлен python на вашем Mac, вы можете использовать этот скрипт для изменения SVG перед тем, как открывать его в Illustrator. Затем, после того как вы закончите редактирование, сделайте обратное, чтобы опубликовать новый атрибут в поле id. Что-то вроде вонючего, но производительность иллюстратора сделала его лучше, чем страдания от Inkscape для меня -

from bs4 import BeautifulSoup

svg = open('myawesome.svg', 'r').read()

soup = BeautifulSoup(svg)

paths = soup.findAll('path')

for p in paths:
    p['inkscape:temp_id'] = p['id']

    html = p.prettify("utf-8")
    with open("output.svg", "a") as file:
        file.write(html)

Хитрость заключается в том, чтобы открыть исходный SVG в текстовом редакторе и заменить пути выходными данными этого скрипта. Когда вы закончите в Illustrator, скопируйте этот скрипт на python и скопируйте "inkscape:temp_id" обратно в p['id'] (в противоположность первому разу), и тогда все готово.

Надеюсь, это поможет кому-то там. Я потратил 4 часа сегодня на то, чтобы выяснить, как сохранить идентификаторы элементов в Illustrator для проекта, над которым я работаю, и это лучшее, что я мог придумать. Удачи!

Другие вопросы по тегам