gpt4 book ai didi

javascript - 使用 javascript 脚本可靠地检测 InDesign Server 中 TextFrames 中的文本溢出?

转载 作者:行者123 更新时间:2023-11-30 06:09:17 25 4
gpt4 key购买 nike

我目前正在使用 InDesign Server 编写一些 Javascript 脚本。在更改格式或将 XML 放入其中后,我无法尝试可靠地检测 TextFrames 中的溢出。

例如,我有一个函数可以缩小 4 列 TextFrame 的高度,直到文本溢出框架。然后它增加高度,直到它不再溢出。这应该导致尽可能接近相等的列高。

while(!bodyTextFrame.overflows) {
var bounds = bodyTextFrame.geometricBounds;
bodyTextFrame.geometricBounds = [bounds[0], bounds[1], bounds[2] - 1, bounds[3]];
//app.consoleout("shrinking");
}

while(bodyTextFrame.overflows) {
var bounds = bodyTextFrame.geometricBounds;
bodyTextFrame.geometricBounds = [bounds[0], bounds[1], bounds[2] + 1, bounds[3]];
//app.consoleout("expanding");
}

在 InDesign 桌面中,这工作正常(通过一些修改使其使用当前选定的对象),但在 InDesign Server 中,这似乎在收缩阶段过冲,然后只展开一次。

将 XML 放入 TextFrame 然后检测该文本是否导致溢出后,也会出现类似的问题。如果我在 placeXML() 之后直接检查溢出,它总是返回 false,但如果我在脚本的后面部分检查溢出,它会正确检测到它。

这有点像在计算文本是否溢出时有延迟,但它会继续执行脚本,直到 TextFrame 上的溢出属性更新为止。

有没有办法强制脚本等待溢出属性更新?或者设置脚本的模式等待刷新?还是我做错了?

最佳答案

如您所见,组合是一项延迟任务。大多数需要有效组合的脚本事件会自动强制执行,但有时您必须使用 recompose() 方法,例如

myDocument.recompose()

关于javascript - 使用 javascript 脚本可靠地检测 InDesign Server 中 TextFrames 中的文本溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1083194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com