if(myParagraph.characters[-1].contents = "\r"){ myString =

myParagraph.texts.itemByRange(myParagraph.characters[0], 'b myParagraph.characters[-2]).contents;

}else{

myString = myParagraph.contents;

}

}

}

Разберем подробнее метод itemByRange о. Он имеет два параметра, задающие диапазон объектов, к которым InDesign обращается через свои внутренние механизмы. Такой подход гораздо эффективнее в плане производительности (с ним может сравниться только написание не скрипта, а полноценного плагин-модуля, но это требует значительно больших знаний). Анализ производительности обоими методами (перебор средствами JavaScript и InDesign) дает убедительный результат: в среднем скорость выполнения форматирования поднялась на порядок, что является прекрасным результатом и отлично подходит для работы фактически с любым количеством объектов.

Метод itemByRange () существует в подавляющем большинстве объектов, за что разработчикам InDesign нужно сказать отдельное спасибо. Среди них - работа со строками, колонками, символами, абзацами, таблицами, ячейками, рядами. Поскольку, как уже говорилось, в таком случае InDesign задействует внутренний механизм, никакого дискомфорта даже в случае обработки значительных фрагментов нет, особенно это ощущается при работе с таблицами на уровне ячеек.

// Каждый HTML-абзац должен быть обрамлен открывающим //и закрывающим тегами

myTextFile.writeln(myStartTag + myString + myEndTag);

// Если используется множественное локальное форматирование,

// чтобы его не потерять, устанавливаем для каждого стиля // соответствующую ему разметку }else{

for(j = 0; j < myParagraph.textStyleRanges.length; j ++){ myTextStyleRange = myParagraph.textStyleRanges[j];

// Аналогично выделяем из абзаца только текст,

// удаляя знаки абзаца

if(myTextStyleRange.characters[~l]=="\r"){ myString =

myTextStyleRange.texts.itemByRange(4> myTextStyleRange.characters[1], 4> myTextStyleRange.characters[-2]).contents;

}else{

myString = myTextStyleRange.contents;

)

// Оформляем HTML-тегами фрагменты текста, набранные // полужирным, курсивом и смешанным начертаниями switch(myTextStyleRange.fontStyle){

case "Bold": myString = "<b>" + myString + "</b>" break;

case "Italic": myString = "<i>" + myString + "</i>" break;

case "Bold Italic": myString = "<bxi>" + myString + "</ix/b>" break;

)

// Записываем конечный результат myTextFile.write(myString);}

// Добавляем к нему символ новой строки myTextFile.write("\r");}

// Если встретилась таблица, обрабатываем и ее }else{

шуТаЫе = myParagraph. tables [0] ;

// Чтобы таблица была заметна, задаем ей рамку myTextFile.writeln("<table border = 1>");

// Обрабатываем построчно for (myRowCounter = 0; 'b

myRowCounter < myTable. rows. length; myRowCounter ++) { myTextFile.writeln("<tr>") ;

// И каждую колонку отдельно for (myColumnCounter = 0;

myColumnCounter cmyTable.columns.length; 4> myColumnCounter++){


⇐ вернуться назад | | далее ⇒