[AI CC-CC2021] вставка SVG скриптом

VIT

Участник
Топикстартер
Сообщения
9
Реакции
0
Здравствуйте! Есть строчка текста который представляет из себя простую картинку в svg, если его копировать и просто вставить в иллюстратор выше 19 версии-получим изображение. Помогите сделать это через скрипт.

Код:
var gg = activeDocument.layers['Бланк'].groupItems.add();
gg.name = 'svg';
var bDoc = app.activeDocument.layers['Бланк'].groupItems['svg'].textFrames;
var rst="<svg version='1.1' id='Layer 1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 44.86 32.33' style='enable-background:new 0 0 44.86 32.33;' xml:space='preserve'><g><path d='M38.79,11.62V4.31l-0.37-0.23C38.14,3.92,31.51,0,21.63,0C10.86,0,0,5.02,0,16.25c0,11.11,10.89,16.08,21.67,16.08    c9.71,0,16.47-4.07,16.75-4.25l0.37-0.23l0-7.17h3.23v-4.41h2.84v-4.66H38.79z M37.25,26.98c-1.51,0.82-7.53,3.81-15.58,3.81    c-10.02,0-20.13-4.5-20.13-14.54c0-10.16,10.09-14.71,20.09-14.71c8.15,0,14.11,2.86,15.62,3.66v4.77    c-1.66-0.93-4.94-2.31-9.87-2.31c-6.5,0-9.52,5.08-9.52,8.51c0,1.99,0.7,8.5,9.67,8.5c5.09,0,8.15-1.24,9.72-2.15V26.98z M27.53,23.12c-7.08,0-8.13-4.36-8.13-6.96c0-2.18,2.01-6.96,7.98-6.96c5.21,0,8.44,1.67,9.62,2.42h-5.36v4.66h3.02v4.41h2.54    C36.37,21.32,33.49,23.12,27.53,23.12z M43.31,14.74h-2.84v4.41h-4.27v-4.41h-3.02v-1.58h10.13V14.74z'/><path d='M11.15,7.81c-3.49,0-6.33,2.62-6.33,5.84l0.03,8.32c0,1.92,1.54,3.12,3.1,3.12V13.65c0-1.62,1.43-2.93,3.19-2.93    c1.76,0,3.2,1.31,3.2,2.93c0,1.61-1.44,2.91-3.2,2.91c-0.65,0-1.27-0.19-1.79-0.5v3.15c0.58,0.14,1.17,0.24,1.79,0.24 c3.49,0,6.33-2.61,6.33-5.8C17.48,10.43,14.64,7.81,11.15,7.81z'/></g></svg>";

var a=bDoc.add();
a.contents=rst;
встает просто текст естественно...
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Я бы сделал как-то так...

Код:
rst="<svg version='1.1' id='Layer 1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 44.86 32.33' style='enable-background:new 0 0 44.86 32.33;' xml:space='preserve'><g><path d='M38.79,11.62V4.31l-0.37-0.23C38.14,3.92,31.51,0,21.63,0C10.86,0,0,5.02,0,16.25c0,11.11,10.89,16.08,21.67,16.08    c9.71,0,16.47-4.07,16.75-4.25l0.37-0.23l0-7.17h3.23v-4.41h2.84v-4.66H38.79z M37.25,26.98c-1.51,0.82-7.53,3.81-15.58,3.81    c-10.02,0-20.13-4.5-20.13-14.54c0-10.16,10.09-14.71,20.09-14.71c8.15,0,14.11,2.86,15.62,3.66v4.77    c-1.66-0.93-4.94-2.31-9.87-2.31c-6.5,0-9.52,5.08-9.52,8.51c0,1.99,0.7,8.5,9.67,8.5c5.09,0,8.15-1.24,9.72-2.15V26.98z M27.53,23.12c-7.08,0-8.13-4.36-8.13-6.96c0-2.18,2.01-6.96,7.98-6.96c5.21,0,8.44,1.67,9.62,2.42h-5.36v4.66h3.02v4.41h2.54    C36.37,21.32,33.49,23.12,27.53,23.12z M43.31,14.74h-2.84v4.41h-4.27v-4.41h-3.02v-1.58h10.13V14.74z'/><path d='M11.15,7.81c-3.49,0-6.33,2.62-6.33,5.84l0.03,8.32c0,1.92,1.54,3.12,3.1,3.12V13.65c0-1.62,1.43-2.93,3.19-2.93    c1.76,0,3.2,1.31,3.2,2.93c0,1.61-1.44,2.91-3.2,2.91c-0.65,0-1.27-0.19-1.79-0.5v3.15c0.58,0.14,1.17,0.24,1.79,0.24 c3.49,0,6.33-2.61,6.33-5.8C17.48,10.43,14.64,7.81,11.15,7.81z'/></g></svg>";
faylo = new File("/C/" + "temp.svg");
faylo.open("w");
faylo.write(rst);
faylo.close();
app.open(faylo);
app.executeMenuCommand ('selectall');
app.copy();
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
app.paste();
faylo.remove();
 
  • Спасибо
Реакции: Gad

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
можно просто импортировать, раз в файл сохранили

docRef.groupItems.createFromFile(faylo);
 
  • Спасибо
Реакции: Gad

VIT

Участник
Топикстартер
Сообщения
9
Реакции
0
Способ с сохранением временного файла после ввода строчки теста я видел в каком-то старом скрипте, он был актуален когда в люстру нельзя было просто вставить текст svg и получить картинку.
Всё работает, спасибо, но что-то мне подсказывает что есть способ проще...Никто не сталкивался? :)