2013-06-26 95 views
1

這是我發現的一個難題。'沒有文檔窗口打開'錯誤

我有一個腳本可以在InDesign中打開一個文件,對它做一些工作,然後關閉它。爲了幫助加速這一過程,我已經關閉了通過使用false參數顯示文件打開文件時,像這樣:

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

有時,同時做在一個開放的文件中的一些工作,該腳本可能需要需要從11英寸調整某個頁面高大的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中的示例腳本(滾動到底部)。

示例腳本的路徑是Adob​​e公司的InDesign CS6腳本SDK \ InDesign中\ scriptingguide \腳本\ JavaScript的\文件\ PageReframe.jsx

檢查這個腳本,我們看到它永遠不會調用select()。實際上,PageResize.jsx也不會調用select()

另外,雖然InDesign Server可以調整頁面大小並重新構建頁面,但您會注意到select()函數爲missing entirely。看起來select()隻影響GUI。

面對所有這些證據,我會打賭說腳本指南在說明「您必須選擇頁面」時是錯誤的。嘗試刪除該行,看看它是否工作。

編輯2

在一個不相關的注意事項,下面幾行可能會很麻煩:

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

+=-=運營商將試圖直接修改的範圍,但邊界是隻讀只能使用諸如resizereframe之類的方法進行修改。我會建議其更改爲這樣:

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

按照[Adobe公司的InDesign CS6 腳本編程指南:使用Javascript]第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()'。 此外,感謝您捕捉'+ ='和' - ='失誤。我最初試圖讓它在沒有將這些變量分配給變量的情況下工作,但是我很快發現'bounds'是隻讀的,之後忘記了刪除賦值運算符。 再次感謝,dln385,你真棒! – Sturm