현재 InDesign Server에서 몇 가지 Javascript 스크립팅을하고 있습니다. 서식을 변경하거나 XML을 배치 한 후 TextFrames의 오버플로를 안정적으로 감지하려고하는 데 문제가 있습니다.자바 스크립팅을 사용하여 InDesign Server의 텍스트 프레임에서 텍스트 오버 플로우가 안정적으로 감지됩니까?
예를 들어 텍스트가 프레임을 오버플로 할 때까지 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");
}
(일부 수정으로 현재 선택된 개체를 사용할 수 있도록하기 위해)하지만, 인디자인 서버에서이 위축 단계에서 오버 슈트 것, 그리고 한 번만 확장합니다.
비슷한 문제는 XML을 TextFrame에 배치 한 다음 해당 텍스트로 인해 오버플로가 발생했는지 여부를 감지 한 후에도 발생합니다. placeXML() 바로 뒤에 오버플로가 있는지 확인하면 항상 false를 반환하지만 스크립트의 뒷부분에서 오버플로를 확인하면 올바르게 감지합니다.
텍스트가 오버플로되는지 여부를 계산하는 데 지연이있는 것처럼 보이지만 오버플로 속성이 TextFrame에서 업데이트 될 때까지 스크립트를 통해 계속 수행됩니다.
오버 플로우 속성이 업데이트 될 때까지 스크립트가 대기하도록하는 방법이 있습니까? 또는 새로 고침을 기다리는 스크립트의 모드를 설정 하시겠습니까? 아니면 내가 잘못하고있는거야?