JavaScript 스크립팅을 사용하여 Indesign 서버의 텍스트 프레임에서 텍스트 오버 플로우를 안정적으로 감지 하시겠습니까?

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

문제

현재 Indesign Server를 사용하여 JavaScript 스크립팅을하고 있습니다. 서식을 변경하거나 XML을 배치 한 후 텍스트 프레임의 오버플로를 안정적으로 감지하는 데 어려움을 겪고 있습니다.

예를 들어, 텍스트가 프레임이 오버플러질 때까지 4 열 텍스트 프레임 높이를 축소하는 함수가 있습니다. 그런 다음 더 이상 넘치지 않을 때까지 높이가 증가합니다. 이로 인해 가능한 한 컬럼 높이에 가깝게 발생해야합니다.

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 Desktop에서 이것은 정상적으로 작동하지만 (현재 선택한 객체를 사용하기 위해 약간의 수정으로), Indesign Server에서는 수축 단계에서 오버 슈트를 한 다음 한 번만 확장하는 것처럼 보입니다.

XML을 텍스트 프레임에 배치 한 후 해당 텍스트가 오버플로를 유발했는지 여부를 감지 한 후에도 비슷한 문제가 발생합니다. Placexml () 후 직접 흐름을 확인하면 항상 False를 반환하지만 스크립트의 후반부에서 오버플로를 확인하면 올바르게 감지됩니다.

텍스트가 오버 플로우 여부를 계산하는 데 지연되는 것과 비슷하지만 오버플로 속성이 텍스트 프레임에서 업데이트 될 때까지 스크립트를 통해 계속됩니다.

오버플로 속성이 업데이트 될 때까지 스크립트를 기다리도록 강요하는 방법이 있습니까? 아니면 새로 고침을 기다리기 위해 스크립트 모드를 설정 하시겠습니까? 아니면 그냥 잘못하고 있습니까?

도움이 되었습니까?

해결책 2

따라서 이것은 내 XML이 어떻게 구성되었는지의 부작용으로 인해 발생하는 것으로 나타났습니다. 텍스트 프레임에 적용한 XML에는 여러 가지가 포함되어 있습니다. <p> 오버플로를 평가할 때 레이아웃 엔진을 혼동하는 것처럼 보이는 태그. 태그를 대체하기 위해 스크립트를 통해 XML을 실행했습니다. &#x2029; (단락 분리기 문자) 그리고 지금은 잘 작동합니다.

다른 팁

당신이 찾은 것처럼, 구성은 연기 된 과제입니다. 유효한 구성이 필요한 대부분의 스크립팅 활동은 자동으로 강제되지만 때로는 recompose () 메소드를 사용해야합니다.

myDocument.recompose()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top