这是我发现的一个难题。
我有一个脚本可以在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
参数,那么脚本运行正常。
所以,我想知道是否有办法解决这个问题。我希望打开文档而不显示它们,但仍然可以在需要时调整页面大小。有什么想法吗?
答案 0 :(得分:1)
你为什么打电话给padPage.select();
?它看起来不像你的代码需要它。
修改强>
在Adobe InDesign CS6 Scripting Guide: Javascript的第42页的页面上,有一个示例代码段,用于重新构建页面,但不会调用select()
。该片段来自InDesign CS6 Scripting SDK中的示例脚本(滚动到底部)。
示例脚本的路径是 Adobe InDesign CS6 Scripting SDK \ indesign \ scriptingguide \ scripts \ JavaScript \ documents \ 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;
+=
和-=
运算符将尝试直接修改边界,但边界是只读的,只能使用resize
或{{1}等方法进行修改}。我建议将其更改为:
reframe