выбрать/вырезать/вставить, когда окно не видно

Я работаю над сценарием, в котором я беру дизайн визитной карточки и использую его для создания листа бумаги с десятью карточками, чтобы соответствовать шаблону для печати временных карточек. Сложная часть здесь - кровотечения; они будут перекрываться посередине, поэтому мне нужно сделать обтравочные маски для каждого из них.

Я придумал систему, в которой я сделал кадры, которые стали обтравочными масками, продублировал и переместил карточки туда, где они должны быть, а затем примерно сделал следующее:

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

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

Это прекрасно работает. Но поскольку это немного ресурсоемко, я попытался скрыть рабочий файл при создании и использовать workFile.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), и это не сработает, потому что окно документа не открыто. В этом примере я хотел бы получить один прямоугольник внутри другого без видимого окна.


person Brendan    schedule 07.08.2012    source источник
comment
Правильно ли я понимаю, что вы сначала настраиваете поля, которые будут действовать как обтравочные маски. В них вы помещаете визитные карточки (например, PDF-файлы)?   -  person Jonas    schedule 22.08.2012
comment
Ага! Это точно. Визитные карточки на самом деле представляют собой группу объектов в InDesign, хотя я полагаю, что вопрос был бы таким же, если бы они были помещены в PDF-файлы.   -  person Brendan    schedule 22.08.2012
comment
Я не думаю, что это возможно без открытого физического окна, потому что выбор/вырезание/вставка в основном действуют на сам интерфейс, точно так же, как когда пользователь вырезает/вставляет. Если вы имеете дело с объектами напрямую без команд вырезания/вставки/выбора, это будет быстрее.   -  person Josh Voigts    schedule 27.08.2012
comment
Как бы я это сделал? Есть ли какой-то эквивалент, который я мог бы использовать для достижения того же эффекта?   -  person Brendan    schedule 27.08.2012
comment
Можете ли вы предоставить немного больше информации или пример сценария того, что вы пытаетесь выполнить?   -  person Josh Voigts    schedule 12.09.2012
comment
@JoshVoigts Я добавил пример сценария в свой вопрос! Спасибо за ваш интерес.   -  person Brendan    schedule 12.09.2012


Ответы (1)


Вместо использования копирования и вставки вы можете манипулировать самими прямоугольными объектами следующим образом:

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

Все это можно сделать без открытия окна, так как вы управляете объектами напрямую. Надеюсь это поможет!

person Josh Voigts    schedule 12.09.2012