如何使用CEP/JavaScript设置默认文档效果?
How to set default document effects using CEP/JavaScript?
我正在构建一个应用程序,它使用 CEP/JS 在 Indesign 文档中绘制许多对象(矩形、直线、圆形等)。我遇到的问题是我添加的所有对象都继承了文档的默认透明度设置等,这是一个大问题,因为这些设置不受控制(在任何文档上都可能不同)。
所以,我的第一个解决方案是明确定义我正在绘制的任何对象的所有属性来克服这个问题,这工作正常,但我现在遇到的问题是性能,因为我发现明确设置所有这些对象属性正在花费大量时间(并且 CPU)。作为参考,我必须为每个对象设置大约 40 个属性。在要绘制 100 个对象的测试文档上,大约需要 10 秒,而在具有完全相同的对象 + 设置 40 个属性的同一个文档上,相同的作业需要 40 秒。
所以问题是:
- 是否可以防止CEP在绘制新对象时使用文档默认属性?
- 有没有办法将文档中的默认值存储在变量中,在绘制我的所有对象之前重置文档中的所有默认值,然后在完成后设置初始值(以避免必须设置大型循环中每个对象的 40 个属性)。
我应用了@RobC 和@Yuri Khristich 的解决方案,即在我绘制的各种项目上使用 'None' 类型的 ObjectStyle。仍然需要时间,但比以前少了。
示例如下:
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].
// ...
});
我正在构建一个应用程序,它使用 CEP/JS 在 Indesign 文档中绘制许多对象(矩形、直线、圆形等)。我遇到的问题是我添加的所有对象都继承了文档的默认透明度设置等,这是一个大问题,因为这些设置不受控制(在任何文档上都可能不同)。
所以,我的第一个解决方案是明确定义我正在绘制的任何对象的所有属性来克服这个问题,这工作正常,但我现在遇到的问题是性能,因为我发现明确设置所有这些对象属性正在花费大量时间(并且 CPU)。作为参考,我必须为每个对象设置大约 40 个属性。在要绘制 100 个对象的测试文档上,大约需要 10 秒,而在具有完全相同的对象 + 设置 40 个属性的同一个文档上,相同的作业需要 40 秒。
所以问题是:
- 是否可以防止CEP在绘制新对象时使用文档默认属性?
- 有没有办法将文档中的默认值存储在变量中,在绘制我的所有对象之前重置文档中的所有默认值,然后在完成后设置初始值(以避免必须设置大型循环中每个对象的 40 个属性)。
我应用了@RobC 和@Yuri Khristich 的解决方案,即在我绘制的各种项目上使用 'None' 类型的 ObjectStyle。仍然需要时间,但比以前少了。
示例如下:
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]. // ... });