2013-06-26 2 views
1

다음은 내가 발견 한 수수께끼입니다.'문서 창이 열려 있지 않습니다.'오류

InDesign에서 파일을 여는 스크립트가 있습니다. 일부 스크립트는 InDesign에서 파일을 열고 닫은 다음 닫습니다. 열려있는 파일에 몇 가지 작업을하는 동안, 스크립트가 필요로 할 수도,

var document = app.open(oFile, false); 

때때로 : 그것을 가속화하기 위해, 나는 파일을 여는과 같이하면서 false 인수를 사용하여 파일을 표시 꺼져 thusly 히, 높이 12.5 인치 높이 십일인치에서 특정 페이지 크기를 조정하려면 :

if (padPrinted) { 
     for (var p = 0; p < outputRangeArray.length; p++) { 
      var padPage = document.pages.item(outputRangeArray[p]); 
      if (padPage.bounds[2] - padPage.bounds[0] === 11) { 
       padPage.select(); 
       var myY1 = padPage.bounds[0] -= 0.75; 
       var myX1 = padPage.bounds[1]; 
       var myY2 = padPage.bounds[2] += 0.75; 
       var myX2 = padPage.bounds[3]; 
       padPage.reframe(CoordinateSpaces.INNER_COORDINATES, [[myX1*72, myY1*72], [myX2*72, myY2*72]]); 
      } 
     } 
    } 

이 꽤 많은 시간 동안 나를 위해 완벽하게 작동되었지만 지금 메시지와 함께 라인 padPage.select()에 가끔 오류 :

문서 창이 열려 있지 않습니다.

파일을 열어 false 인수를 삭제하는 줄로 돌아 가면 스크립트가 올바르게 작동합니다.

그래서이 문제를 해결할 수있는 방법이 있는지 알고 싶습니다. 문서를 표시하지 않고 문서를 열어두고 싶지만 필요할 때 페이지의 크기를 조정할 수있는 기능이 있습니다. 어떤 아이디어?

답변

1

padPage.select();으로 전화하는 이유는 무엇입니까? 그것은 당신의 코드가 필요로하는 것처럼 보이지 않습니다.

편집 :Adobe InDesign CS6 Scripting Guide: Javascript 페이지 42 페이지

페이지를 reframes 및 select()를 호출하지 않습니다 샘플 조각이있다. 스 니펫은 InDesign CS6 Scripting SDK에있는 샘플 스크립트에서 가져옵니다 (아래로 스크롤).

샘플 스크립트의 경로는 어도비 인디자인 CS6 스크립팅 SDK입니다 \ 인디자인 \ scriptingguide \, 우리가 결코 select()를 호출하지 볼 자바 스크립트 \ 문서 \ 스크립트 PageReframe.jsx

이 스크립트를 검사 \. 실제로 PageResize.jsxselect()으로 전화하지 않습니다.

또한 InDesign Server는 페이지의 크기를 조정하고 페이지를 다시 작성할 수 있지만 select() 기능은 missing entirely입니다. select()은 GUI에만 영향을 미치는 것으로 보입니다.

이 모든 증거에 직면하여 나는 "당신이 페이지를 선택해야한다"고 말할 때 스크립팅 가이드가 잘못되었다고 맹세합니다. 해당 줄을 제거하고 작동하는지 확인하십시오.

var myY1 = padPage.bounds[0] -= 0.75; 
var myX1 = padPage.bounds[1]; 
var myY2 = padPage.bounds[2] += 0.75; 

+=-= 운영자가 직접 경계를 수정하려고 시도하지만 경계는 읽기 있습니다

관련이없는 노트에 편집 2

, 다음 줄은 골칫거리 수 있습니다 단지 resize 또는 reframe과 같은 방법으로 수정할 수 있습니다.나는이로 변경하는 것이 좋습니다 것입니다 :

var myY1 = padPage.bounds[0] - 0.75; 
var myX1 = padPage.bounds[1]; 
var myY2 = padPage.bounds[2] + 0.75; 
+0

에서 [어도비 인디자인 CS6 스크립팅 가이드 : 자바 스크립트]의 41 페이지에 따르면 (http://wwwimages.adobe.com/www.adobe.com/content/dam /Adobe/en/devnet/indesign/sdk/cs6/scripting/InDesign_ScriptingGuide_JS.pdf), "페이지의 크기를 변경하거나 페이지에 변형을 적용하려면 먼저 페이지를 선택해야합니다." – Sturm

+0

@Sturm 내 답변이 너무 길어서 대신 내 대답을 편집했습니다. – dln385

+0

그게 전부였습니다. 성공하기 전에'.reframe()'메쏘드를 사용하려고했던 것을 기억하지만, 페이지의'.select()'메쏘드가 작동하게했습니다. 아니면 아마도 나는 잘못 기억하고있을 것입니다. 그럼에도 불구하고, 42 페이지에서 잘랐다는 것에 대해 옳았다. 이전에는'.select()'의 생략을 발견하지 못했다. 또한 '+ ='와'- ='gaffe를 찾아 주셔서 감사합니다. 원래는 변수를 변수에 할당하지 않고 작동 시키려고했지만'bounds'는 읽기 전용이고 나중에 할당 연산자를 제거하는 것을 잊었습니다. 감사합니다. dln385, 정말 대단합니다! – Sturm