Javascript 相对于扩展边界移动选择的脚本?

Javascript 相对于扩展边界移动选择的脚本?,javascript,scripting,alignment,adobe-indesign,Javascript,Scripting,Alignment,Adobe Indesign,我有一份文件,其范围远远大于文件中包含的内容。 我有另一个模板文件,其排列和所有选定对象的边界大小相匹配。我需要打开该模板,粘贴对象,将粘贴的对象选择对齐到排列的左上角(也称为粘贴板或工作区?),然后导出为.pdf和.eps 由于各种坐标系的混乱,我的理想解决方案是不必移动任何东西,而是在粘贴内容时使粘贴内容的左上角与排列的左上角对齐。粘贴或粘贴到位都不会将内容放在我需要的地方。物体太低了。 即使有一种解决方案可以从一开始就将信息粘贴到需要的位置,我仍然希望知道如何相对于可见的工作区域移动信

我有一份文件,其范围远远大于文件中包含的内容。

我有另一个模板文件,其排列和所有选定对象的边界大小相匹配。我需要打开该模板,粘贴对象,将粘贴的对象选择对齐到排列的左上角(也称为粘贴板或工作区?),然后导出为.pdf和.eps

由于各种坐标系的混乱,我的理想解决方案是不必移动任何东西,而是在粘贴内容时使粘贴内容的左上角与排列的左上角对齐。粘贴或粘贴到位都不会将内容放在我需要的地方。物体太低了。

即使有一种解决方案可以从一开始就将信息粘贴到需要的位置,我仍然希望知道如何相对于可见的工作区域移动信息(我相信这被正确地称为传播,但更常见的是称为粘贴板?我只是想确保我问的问题正确,这样我的意图就会被理解)

我对以下代码行的第一次尝试产生了如下图所示的结果;只移动了background.eps对象,它向下移动

app.selection[0].move([myPage.bounds[0]+myMargins.top,myPage.bounds[1]+myMargins.left]);
i36_photobucket_com/albums/e50/nollaf126/3-first-try-to-move.png

我的第二次尝试如下图所示;它似乎也只是重新定位背景图像,但有些东西也向下和向右移动了很远。它可能与我复制对象时的排列大小和形状相同。当我第一次将对象粘贴到新文档中时,选择边界的大小是正确的,u直到执行了更改几何边界的代码行

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/albums/e50/nollaf126/4-2nd-try-to-move.png

此外,以前的尝试(在我添加老虎图像之前,文本在其最左边,老虎后面有一个红色矩形)看到了除背景之外的所有选定对象。eps图像使用app.selection[0].geometricBounds语句向上移动到正确的位置

任何帮助都将不胜感激。以下是代码和所涉及层上对象的屏幕截图

i36_photobucket_com/albums/e50/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

您不必移动任何东西,只需在复制和粘贴项目之前设置默认的零点即可

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

现在您可以按预期粘贴到位。如果使用脚本进行放置,请确保
测量值也设置正确。否则,两个文档的
x
y
值不相等:
x
mm不是
x
英寸。

执行此类操作的更有效方法是使用.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个值的数组)无论你需要什么,都要在页面上进行偏移。

很抱歉,必须以这种方式提供参考图像,但我还没有足够的声誉来以其他方式提供参考图像。要查看我列出的最后三张图像中的任何一张,就像这样…i36\u photobucket\u com/albums/e50/nollaf126/5-layers.png…只需将其复制/粘贴到新选项卡中的地址栏中,chan将下划线改为句点,并在URL开头添加https://然后按enter键,您将能够看到参考图像。