当窗口不可见时选择/剪切/粘贴到

select / cut / pasteInto when window not visible

本文关键字:剪切 选择 窗口      更新时间:2023-09-26

我正在编写一个脚本,我在其中进行名片设计,并使用它来生成一张纸,上面有十张卡片,以匹配模板来打印临时卡片。这里棘手的部分是出血;它们会在中间重叠,所以我需要为每个蒙版制作剪裁蒙版。

我想出了一个系统,我制作了将成为剪切蒙版的帧,复制卡片并将其移动到需要的位置,然后或多或少地执行以下操作:

dupCard[i].select();
app.cut();
frameGroupFront[i].select();
app.pasteInto();

这很好用。但是因为它有点资源密集型,我试图在创建时使用工作文件隐藏工作文件并使用workingFile.windows.add();最后,就像我过去所做的那样。但是当没有窗口时,select() 不起作用!我收到错误 90886,指出"没有打开文档窗口"。

如何选择所需的项目,以便在没有可见窗口的情况下剪切和粘贴它?如果不可能,是否有替代解决方案?

编辑:

我被要求提供一个脚本示例,因此这是我可以提供的最基本的示例:

var newPage = app.documents.add();
var myRectangle = newPage.rectangles.add({geometricBounds:[1, 1, 5, 5]});
var myRectangle2 = newPage.rectangles.add({geometricBounds:[1, 1, 3, 3]});
myRectangle.select();
app.cut();
myRectangle2.select();
app.pasteInto();

此脚本有效。但是,取第一行并执行 app.documents.add(false),它不起作用,因为没有打开文档窗口。在此示例中,我希望能够将一个矩形放在另一个矩形中,而看不到窗口。

您可以像这样操作矩形对象本身,而不是使用复制和粘贴:

var doc = app.documents.add(); // Add a new doc
var page = doc.pages[0];       // Get the first page
var rect = page.rectangles.add({geometricBounds:[30,30,6,6]})    // Make a new rect
var rect2 = rect.rectangles.add({geometricBounds:[20,20,6,6]});  // Add a new rect inside

这一切都可以在不打开窗口的情况下完成,因为您直接操作对象。希望这有帮助!