Скрипт для перемещения выделения относительно границ распространения?

У меня есть документ со спредом, который намного больше, чем содержимое документа. http://i36.photobucket.com/albums/e50/nollaf126/1-oversize-pasteboard.png

У меня есть другой файл шаблона с разворотом, который соответствует размеру границ всех выбранных объектов. Мне нужно открыть этот шаблон, вставить объекты, выровнять эти вставленные объекты по верхнему левому краю разворота (также называемый монтажной областью или рабочей областью?), А затем экспортировать в формате.pdf и.eps.

Из-за большой путаницы в отношении различных систем координат мое идеальное решение состояло бы в том, чтобы вообще не перемещать что-либо, а вместо этого выровнять верхний левый угол вставленного содержимого с верхним левым углом разворота при вставке. Ни вставка, ни вставка на месте не помещают содержимое туда, где они мне нужны. Объекты слишком низкие. http://i36.photobucket.com/albums/e50/nollaf126/2-contents-pasted-too-low.png

Даже если есть решение для вставки информации, куда она должна идти с самого начала, я все равно хотел бы знать, как перемещать вещи относительно видимой рабочей области (я считаю, что это правильно называется распространением, но больше обычно называется картон? Я просто хочу убедиться, что я правильно задаю свой вопрос, чтобы мои намерения были поняты).

Моя первая попытка со следующей строкой кода дает результат, показанный на следующем рисунке; перемещается только фоновый объект.eps, и он перемещается вниз.

app.selection[0].move([myPage.bounds[0]+myMargins.top,myPage.bounds[1]+myMargins.left]);

i36_photobucket_com / альбомы / е50/nollaf126/3-первых, попробуйте к move.png

Моя вторая попытка проиллюстрирована ниже; также кажется, что он только перемещает фоновое изображение, но что-то также перемещается очень далеко вниз и вправо. Похоже, что он может быть того же размера и формы, что и спред, из которого я скопировал объекты. Границы выбора были правильного размера, когда я впервые вставил объект в новый документ, пока не была выполнена строка кода для изменения геометрических границ.

app.selection[0].geometricBounds = [myPage.bounds[0]+myMargins.top,myPage.bounds[1]+myMargins.left,myPage.bounds[2]-myMargins.bottom,myPage.bounds[3]-myMargins.right];
//

i36_photobucket_com / альбомы / е50/nollaf126/4-2nd попробуйте к move.png

Кроме того, предыдущие попытки (до того, как я добавил изображение тигра, текст слева от него и красный прямоугольник позади тигра) видели все выделенные объекты, КРОМЕ фонового изображения.eps перемещаются вверх и в правильное положение с помощью приложения..selection[0].geometricBounds оператор.

Любая помощь будет принята с благодарностью. Вот код и скриншот объектов на слое, которые участвуют.

i36_photobucket_com / альбомы / е50/nollaf126/5-layers.png

#target indesign-11.064  // CC 2015

myDoc = app.activeDocument;
myPages = app.activeDocument.pages;
myActivePage=app.activeWindow.activePage;

// 1. Select and copy everything on this document's activePage
app.select(SelectAll.ALL);
app.copy();

// 2. Open template file and paste
whichExportTemplate = "FCILG";
myTemplateFolder="/Users/User/Documents/!  Resources/ Templates/  Ted Signs/ Tags";
sFileName= myTemplateFolder + "/" + whichExportTemplate + ".indd"
sFileName= sFileName.replace (/%20/g, " ");
newDoc = app.open(File(sFileName));

app.pasteInPlace(); 
app.select(SelectAll.ALL);

// 3. POSITION IT
var myPage = myActivePage;
var myMargins = myPage.marginPreferences;

app.selection[0].geometricBounds = [myPage.bounds[0]+myMargins.top,myPage.bounds[1]+myMargins.left,myPage.bounds[2]-myMargins.bottom,myPage.bounds[3]-myMargins.right];

//    app.selection[0].move([myPage.bounds[0]+myMargins.top,myPage.bounds[1]+myMargins.left]);

// 4. Save the new file
// 5. Close

2 ответа

Более эффективный способ выполнения таких операций - использование метода.duplicate (). Например:

var ad = app.activeDocument;
var rc = ad.pages[0].rectangles[0];
var gb = rc.geometricBounds;
var tmpd = app.open (File("path to your template"));
var tmppg = tmpd.pages[0];
var tmprc = rc.duplicate (tmppg);
tmprc.geometricBounds = gb;

Затем вы можете изменить gb (массив из 4 значений) так, чтобы он был смещен на странице.

Вам вообще ничего не нужно перемещать, просто установите нулевую точку по умолчанию перед копированием и вставкой элемента.

app.copyDoc.zeroPoint  = [x,y];
app.pasteDoc.zeroPoint = [x,y];

Теперь вы можете вставить на место, как ожидалось. Если вы используете скрипт для размещения, убедитесь, что ваш MeasurementUnits установлены правильно тоже. В противном случае x а также y значения ваших двух документов не равны: x мм не x дюйм.

Другие вопросы по тегам