私は現在、InDesign ServerでいくつかのJavascriptスクリプトを作成しています。書式を変更したり、XMLを配置したりして、TextFramesのオーバーフローを確実に検出しようとすると、問題が発生します。JavaScriptスクリプティングを使用して、InDesign ServerのTextFramesのテキストオーバーフローを確実に検出しますか?
たとえば、テキストがフレームをオーバーフローするまで、4列のTextFrameの高さを縮小する関数があります。その後、オーバーフローしなくなるまで高さを上げます。これにより、列の高さができるだけ近くなるようにする必要があります。 InDesignのデスクトップで
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のサーバーでは、これは縮小期にオーバーシュートしているようだし、その後一度だけ展開します。
同様の問題は、XMLをTextFrameに配置し、そのテキストがオーバーフローを引き起こしたかどうかを検出した後にも同様の問題が発生します。 placeXML()の直後にオーバーフローをチェックすると、常にfalseが返されますが、スクリプトの後の部分でオーバーフローをチェックすると、オーバーフローが正しく検出されます。
テキストがオーバーフローするかどうかを計算するのに遅延がありますが、オーバーフロープロパティがTextFrameで更新されるまで、スクリプトを介して処理が遅れるようです。
オーバーフロープロパティが更新されるまでスクリプトを強制的に待機させる方法はありますか?または、スクリプトのモードをリフレッシュを待つように設定しますか?それとも間違っているのですか?