Скрипт для перемещения выделения относительно границ распространения?
У меня есть документ со спредом, который намного больше, чем содержимое документа. 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
дюйм.