как в Вашем скрипте указать символьный стиль, входящий в группу стилей
app.activeDocument.selection[0].appliedCharacterStyle = app.activeDocument.characterStyleGroups.item("Имя_группы_стилей").characterStyles.item("Имя_симв_стиля");
#targetengine "quickChanges"
var myEventHandler = function(ev){
try{app.activeDocument.selection[0].appliedCharacterStyle = selectedCS; w.text = "It's working!";}
catch(e){w.text = "It doesn't work!";}
}
var myDoc = app.activeDocument;
var csg = myDoc.characterStyleGroups;
var csNames = []; //Этот массив будет отображаться в выпадающем списке
var csIds = []; //Здесь будут храниться все ID стилей
csNames = app.activeDocument.characterStyles.everyItem().name; //Сначала записали стили не в группах
csIds = app.activeDocument.characterStyles.everyItem().id; //Аналогично
for (i = 0; i < csg.length; i++){ //Цикл по группам
for (j = 0; j < csg[i].characterStyles.length; j++){ //Цикл по стилям в текущей группе
csNames.push(csg[i].characterStyles[j].name +" ("+csg[i].name+")"); //Формат отображения в окне скрипта: Имя_стиля (Имя_группы)
csIds.push(csg[i].characterStyles[j].id);
}
}
var selectedCS;
var w = new Window("palette");
var cs = w.add("dropdownlist",undefined,csNames);
/*
Дальше при изменении параметров выпадающего списка
сразу записываем в переменную выбранный стиль, ориентируясь на его ID.
*/
cs.onChange = function(){
selectedCS = myDoc.characterStyles.itemByID(csIds[cs.selection.index]);
app.activate();
}
var butStart = w.add("button",undefined,"Start");
var started = false;
butStart.onClick = function(){
if (!started){
app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler);
butStart.text = "Stop";
}
else{
app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
butStart.text = "Start";
}
started = !started;
app.activate();
}
w.show();
Если же хочется прямо в окне скрипта выбирать нужный стиль из выпадающего списка, то предварительно надо собирать в один массив имена всех стилей с указанием групп, которым они принадлежат, а в другой массив — id всех символьных стилей для простоты последующего доступа.Код:app.activeDocument.selection[0].appliedCharacterStyle = app.activeDocument.characterStyleGroups.item("Имя_группы_стилей").characterStyles.item("Имя_симв_стиля");
Код:#targetengine "quickChanges" var myEventHandler = function(ev){ try{app.activeDocument.selection[0].appliedCharacterStyle = selectedCS; w.text = "It's working!";} catch(e){w.text = "It doesn't work!";} } var myDoc = app.activeDocument; var csg = myDoc.characterStyleGroups; var csNames = []; //Этот массив будет отображаться в выпадающем списке var csIds = []; //Здесь будут храниться все ID стилей csNames = app.activeDocument.characterStyles.everyItem().name; //Сначала записали стили не в группах csIds = app.activeDocument.characterStyles.everyItem().id; //Аналогично for (i = 0; i < csg.length; i++){ //Цикл по группам for (j = 0; j < csg[i].characterStyles.length; j++){ //Цикл по стилям в текущей группе csNames.push(csg[i].characterStyles[j].name +" ("+csg[i].name+")"); //Формат отображения в окне скрипта: Имя_стиля (Имя_группы) csIds.push(csg[i].characterStyles[j].id); } } var selectedCS; var w = new Window("palette"); var cs = w.add("dropdownlist",undefined,csNames); /* Дальше при изменении параметров выпадающего списка сразу записываем в переменную выбранный стиль, ориентируясь на его ID. */ cs.onChange = function(){ selectedCS = myDoc.characterStyles.itemByID(csIds[cs.selection.index]); app.activate(); } var butStart = w.add("button",undefined,"Start"); var started = false; butStart.onClick = function(){ if (!started){ app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler); butStart.text = "Stop"; } else{ app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler); butStart.text = "Start"; } started = !started; app.activate(); } w.show();
У меня приведенный выше код работает. А какая у Вас версия InDesign?у меня этот скрипт не работает. Запускаю его из индизайна
Можно:а нельзя ли сделать так, чтобы при выделении менялась гарнитура символа БЕЗ создания стиля.
app.activeDocument.selection[0].appliedFont = "Имя_шрифта"
Вот этот вариант проверен и работает:И вариант скрипта из видео с простановкой маркеров ("=") у меня тоже не работает
#targetengine "quickChanges"
var myEventHandler = function(ev){
try{app.activeDocument.selection[0].contents = "="; w.text = "It's working!";}
catch(e){w.text = "It doesn't work!";}
}
var w = new Window("palette");
var butStart = w.add("button",undefined,"Start");
var started = false;
butStart.onClick = function(){
if (!started){
app.activeDocument.addEventListener('afterSelectionChanged', myEventHandler);
butStart.text = "Stop";
}
else{
app.activeDocument.removeEventListener('afterSelectionChanged', myEventHandler);
butStart.text = "Start";
}
started = !started;
app.activate();
}
w.show();
У меня приведенный выше код работает. А какая у Вас версия InDesign?
Если и он у Вас не сработает, то снова возвращаемся к вопросу о версии InDesign. Я проверял в CS5.
Насколько я помню, в CS4 ещё не изобрели события "afterSelectionChanged".
Дупликатор при печати, непосредственно с пдф, растрирует текст, поэтому мы отдаем готовый спуск полос в indd.почему бы в типографию не отдавать pdf?
при печати в любом случае текст растрируется
Это не событие влияет на кнопку, а кнопка на событие. Точнее — кнопка включает/выключает отслеживание программой события "Изменение выделенной области".Но, насколько я понимаю, это событие влияет только на переключение режимов кнопки, или я опять туплю ?
Понял. А какое-нибудь аналогичное событие в CS4 имеется? (И простите за оффтопы)Это не событие влияет на кнопку, а кнопка на событие. Точнее — кнопка включает/выключает отслеживание программой события "Изменение выделенной области".