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参数,那么脚本可以正常工作。

所以,我想知道是否有办法解决这个问题。我希望打开文档而不显示它们,但仍然可以在需要时调整页面大小。有任何想法吗?

4

1 回答 1

1

你为什么打电话padPage.select();?看起来您的代码不需要它。

编辑:

在 Adob​​e InDesign CS6 脚本指南:Javascript的第 42 页上,有一个示例片段重新构建了页面并且不调用select(). 该片段来自InDesign CS6 Scripting SDK中的示例脚本(滚动到底部)。

示例脚本的路径是Adob​​e InDesign CS6 Scripting SDK\indesign\scriptingguide\scripts\JavaScript\documents\PageReframe.jsx

检查这个脚本,我们发现它从不调用select(). 事实上,PageResize.jsx也从不调用select()

此外,虽然 InDesign Server 可以调整页面大小和重新构图,但您会注意到该select()功能完全缺失。似乎select()只影响 GUI。

面对所有这些证据,我敢打赌,当脚本指南说“您必须选择页面”时,它是错误的。尝试删除该行,看看它是否有效。

编辑 2

在不相关的注释中,以下几行可能很麻烦:

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

+=and运算符将-=尝试直接修改边界,但边界是只读的,只能使用resizeor等​​方法进行修改reframe。我建议将其更改为:

var myY1 = padPage.bounds[0] - 0.75;
var myX1 = padPage.bounds[1];
var myY2 = padPage.bounds[2] + 0.75;
于 2013-06-26T15:50:31.297 回答