我正在用InDesign Server做一些Javascript腳本。在更改格式或將XML放入它們之後,我無法可靠地檢測到TextFrame中的溢出。使用JavaScript腳本可靠地檢測InDesign Server中TextFrame中的文本溢出?
例如,我有一個函數可以縮小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服務器,這似乎在收縮階段過頭,然後只擴大一次。
在將XML放入TextFrame中之後也會發生類似的問題,然後檢測該文本是否導致溢出。如果我在placeXML()之後直接檢查溢出,它總是返回false,但如果我在腳本的後面部分檢查溢出,它會正確檢測到溢出。
這有點像計算文本溢出是否有延遲,但是直到溢出屬性在TextFrame上更新,它才通過腳本繼續執行。
是否有強制腳本等待overflow屬性更新的方法?或者設置腳本的模式等待刷新?或者我只是做錯了?