確実にJavaScriptのスクリプトを使用したInDesign ServerのTextFramesでテキストのオーバーフローを検出しますか?
-
23-08-2019 - |
質問
私は、現時点での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のデスクトップで。
同様の問題は、TextFrameにXMLを配置し、そのテキストがオーバーフローを起こしたかどうかを検出した後に発生します。私は直接placeXML(後にオーバーフローをチェックした場合)、それは常にfalseを返しますが、私は、スクリプトの後半でオーバーフローをチェックした場合、それが正しく、それを検出します。
テキストがオーバーフローするかどうかを計算する際の遅延がありますようにそれは少しですが、それはoverflowプロパティがTextFrameに更新されるまでに関係なくスクリプトを上運びます。
overflowプロパティが更新されるまで待つようにスクリプトを強制する方法はありますか?またはリフレッシュを待つスクリプトのモードを設定しますか?または私はちょうどそれが間違っているのでしょうか?
解決 2
だから、これは私のXMLは、構造化されたかの副作用によって引き起こされていたことが判明しました。私はTextFrameに適用されたXMLは、オーバーフローを評価する際、レイアウトエンジンを混同するように見えた<p>
タグの数を含んでいました。私は

(段落区切り文字)でタグを置き換えるためにスクリプトを使用して、私のXMLを実行し、それが今で正常に動作します。
他のヒント
は、組成物は、繰延作業です。有効成分を必要とするほとんどのスクリプト活動が自動的にそれを強制しますが、時にはあなたは、再構成()メソッド、例えばを使用する必要があります。
myDocument.recompose()