Как сохранить идентификаторы элементов при редактировании 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 для проекта, над которым я работаю, и это лучшее, что я мог придумать. Удачи!