Affidabile rilevamento overflow testo in TextFrames in InDesign Server utilizzando javascript scripting?

StackOverflow https://stackoverflow.com/questions/1083194

Domanda

che sto facendo un po 'di scripting JavaScript con InDesign Server in questo momento. Ho problemi cercando di rilevare in modo affidabile overflow nel TextFrames, dopo aver cambiato la formattazione o l'immissione XML in loro.

Per esempio, ho una funzione che riduce l'altezza di una colonna di TextFrame 4 fino a quando il testo supera la cornice. Poi si aumenta l'altezza fino a che non overflow. Ciò dovrebbe comportare più vicino ad altezze di colonna uguale possibile.

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 Questo funziona bene (con alcune modifiche per renderlo utilizzare l'oggetto selezionato in quel momento), ma in InDesign Server questo sembra oltrepassare durante la fase di contrazione, e quindi espandere una sola volta.

Un problema simile si verifica anche dopo aver piazzato XML in un TextFrame e poi rilevare se quel testo ha causato un overflow. Se controllo per l'overflow subito dopo placeXML (), che restituisce sempre false, ma se controllo per l'overflow da un punto avanzato dello script, che rileva in modo corretto.

E 'un po' come se ci fosse un ritardo nel calcolo se i trabocchi di testo, ma si svolge attraverso lo script indipendentemente fino a quando la proprietà overflow viene aggiornato sul TextFrame.

C'è un modo di forzare lo script per attendere che la proprietà overflow è stato aggiornato? O impostando la modalità dello script di attesa per l'aggiornamento? O sto solo facendo male?

È stato utile?

Soluzione 2

Così, si scopre che questo è stato causato da un effetto collaterale di come il mio XML è stato strutturato. L'XML che applicava alla TextFrame conteneva una serie di tag <p> che sembrava confondere il motore di layout nella valutazione dei overflow. Ho incontrato il mio XML tramite uno script per sostituire i tag con &#x2029; (il carattere separatore di paragrafo) e funziona bene ora.

Altri suggerimenti

Come hai trovato, la composizione è un compito differita. La maggior parte delle attività di scripting che richiedono la composizione valida costringerà automaticamente, ma a volte è necessario utilizzare il metodo recompose (), per esempio.

myDocument.recompose()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top