2013-06-26 97 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