Frage

Ich mache einige Javascript-Scripting mit InDesign Server im Moment. Ich habe Probleme beim Versuch, zuverlässig zu überläuft in Textrahmen zu erkennen, nach der Formatierung ändern oder XML in sie setzen.

Zum Beispiel habe ich eine Funktion habe, die eine 4-Säule Textframe Höhe schrumpft, bis der Text den Rahmen überläuft. Dann erhöht sich die Höhe, bis sie nicht mehr überläuft. Dies sollte in so nahe gleich Säulenhöhen wie möglich führen.

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");
}

In InDesign Desktop das funktioniert gut (mit einigen Änderungen an das aktuell ausgewählte Objekt machen verwenden), aber in InDesign Server scheint dies während des Schrumpfphase zu überschreiten, und dann nur einmal erweitern.

Ein ähnliches Problem tritt auch auf, nachdem in eine XML-Textframe platzieren und dann erfassen, ob der Text einen Überlauf verursacht hat. Wenn ich für den Überlauf überprüfe direkt nach placeXML (), es gibt immer falsch, aber wenn ich zu einem späteren Teil des Skripts für den Überlauf überprüfen, es erkennt es richtig.

Es ist ein bisschen wie eine Verzögerung ist, ob der Text überläuft bei der Berechnung, aber es trägt durch das Skript auf, unabhängig, bis die Überlauf-Eigenschaft auf dem Textframe aktualisiert wird.

Gibt es eine Möglichkeit, das Skript zu zwingen, zu warten, bis die Überlaufeigenschaft wird aktualisiert? Oder den Modus der Skript-Einstellung für die Auffrischung zu warten? Oder bin ich nur etwas falsch gemacht?

War es hilfreich?

Lösung 2

Also, es stellt sich heraus, dass dies durch einen Nebeneffekt, wie mein XML strukturiert wurde, verursacht wurde. Die XML-I wurde auf die Textframe Anwendung enthielt eine Reihe von <p>-Tags, die die Layout-Engine zu verwirren schien, wenn die Überläufe zu beurteilen. Ich ließ meine XML durch ein Skript, die Tags mit &#x2029; (der Absatz Trennzeichen) ersetzen und es funktioniert jetzt.

Andere Tipps

Wie Sie gefunden, die Zusammensetzung ist eine verschobene Aufgabe. Die meisten scripting Aktivitäten, die gültige Zusammensetzung erfordern wird es automatisch zwingen, aber manchmal muss man die Neuzusammenstellung () -Methode verwenden, z.

myDocument.recompose()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top