Как установить эффекты документа по умолчанию с помощью CEP/JavaScript?

Я создаю приложение, которое рисует множество объектов (прямоугольники, линии, круг и т. д.) в документе Indesign с использованием CEP/JS. Моя проблема заключается в том, что все объекты, которые я добавляю, наследуют настройки прозрачности документа по умолчанию и т. д., что является большой проблемой, поскольку эти настройки не находятся под контролем (могут отличаться в любом документе).

Итак, мое первое решение этой проблемы состоит в том, чтобы явно определить все атрибуты для любого объекта, который я рисую, чтобы преодолеть это, и это работает нормально, но проблема, с которой я столкнулся сейчас, связана с производительностью, поскольку я обнаружил, что настройка всех этих атрибутов объектов явно занимает много времени. время (и ЦП). В качестве эталона я должен установить около 40 атрибутов для каждого объекта. В тестовом документе со 100 объектами для рисования требуется около 10 секунд, а в том же документе с точно такими же объектами + настройками 40 атрибутов для того же задания требуется 40 секунд.

Итак, вопрос:

  • Можно ли запретить CEP использовать атрибут документа по умолчанию при рисовании новых объектов?
  • Есть ли способ сохранить значения по умолчанию из документа в переменной, сбросить все значения по умолчанию в документе перед рисованием всех моих объектов, а затем установить исходные значения обратно, когда это будет сделано (чтобы избежать необходимости устанавливать 40 атрибутов для каждого объекта в массивной петле).

1 ответ

Я применил решение @RobC и @Yuri Khristich, которое заключается в использовании ObjectStyle типа «None» для различных элементов, которые я рисую. Это все еще требует времени, но меньше, чем раньше.

Вот пример:

https://paste.ee/p/3fW9a

       var doc = app.activeDocument;

// 1. Obtain a reference to the '[None]' Object Style.
var noneObjectStyle = doc.objectStyles.itemByName('[None]');

// 2. Draw a rectangle
var rectangle = doc.pages[0].rectangles.add({
 geometricBounds: [0, 0, 50, 50],
 appliedObjectStyle: noneObjectStyle // <-- 3. Set its Object Style to [None].
 // ...
});
Другие вопросы по тегам