脚本移动选择相对于传播范围?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本移动选择相对于传播范围?相关的知识,希望对你有一定的参考价值。
我有一个文件,其传播范围远远大于文件中包含的内容。 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 /专辑/ E50 / 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 /专辑/ E50 / nollaf126 / 4-2nd试到move.png
此外,之前的尝试(在我添加老虎的图像,文本到其左边,以及老虎背后的红色矩形之前)看到所有选定的对象除了背景.eps图像向上移动并使用应用程序进入正确的位置.selection [0] .geometricBounds语句。
任何帮助将非常感谢。这是代码和图层上涉及的对象的屏幕截图。
i36_photobucket_com /专辑/ 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];
现在您可以按预期粘贴到位。如果您使用脚本放置,请确保您的MeasurementUnits
也正确设置。否则你的两个文件的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个值的数组)到你需要它在页面上偏移的任何东西。
以上是关于脚本移动选择相对于传播范围?的主要内容,如果未能解决你的问题,请参考以下文章