我试图为InDesign创建一个脚本,它强制所有图形框架(矩形)与内容相匹配。我在XML导入和一些图形--尤其是表中--使用XML导入时,使用的是比图形更小的帧。我们不希望图形被裁剪,也不希望它们被缩放到更小的大小,所以我们希望运行一个脚本来查找所有的图形对象,然后强制框架与图形相匹配。我找到了下面的字符串,它应该工作,但我不能让它为我工作。
app.activeDocument.rectangles.everyItem().fit(FitOptions.FRAME_TO_CONTENT);我用这段代码创建了一个非常简单的函数,但它实际上什么也不做。我肯定我错过了一些显而易见的东西,但我的JavaScript经验非常有限。以下是我的简单功能:
function fitToFrame(){
app.activeDocument.rectangles.everyItem().fit(FitOptions.FRAME_TO_CONTENT);
}我也试着把它当作数组来处理,但这也没什么用。
function fitToFrame(){
var doc=app.activeDocument;
app.findObjectPreferences = null;
var obj = new Array(doc.rectangles.everyItem());
for (var i=0; i<obj.length; i++){
obj[i].fit(FitOptions.FRAME_TO_CONTENT);
}
}我尝试了一种不同的方法来查找和识别对象,但这仍然不起作用,而且我被困住了。
function fitToFrame(){
var doc=app.activeDocument;
app.findObjectPreferences = null;
var obj = doc.findObject();
for (var i=0; i<obj.length; i++){
if (obj[i] instanceof Rectangle){
obj[i].fit(FitOptions.FRAME_TO_CONTENT);
}
}
}我遗漏了什么?我很感谢你的建议!
UPDATE我确实发现,当我运行上面列出的最后一个函数时,会发生一些事情,因为它将UI中的撤消菜单更改为“撤销设置的框架匹配选项”,但是文档中没有任何实际更改,所以我仍然被困住了。
发布于 2021-01-16 12:52:40
首先,矩形对象的拟合方法是有效的,我经常使用它。问题是在引用你的矩形时,它必须是代码中我们看不到的东西。尝试将其作为单独的脚本运行:
var obj = app.activeDocument.rectangles;
for (var i=0; i<obj.length; i++){
obj[i].fit(FitOptions.FRAME_TO_CONTENT);
}https://stackoverflow.com/questions/65694672
复制相似问题