使图形框架适合 InDesign 内容

问题描述

我正在尝试为 InDesign 创建一个脚本,强制所有图形框架(矩形)适合内容。我将它与 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);
        }
    }
 }

我错过了什么?我感谢任何建议!

更新 我确实发现当我运行上面列出的最后一个函数时,会发生某些事情,因为它将 UI 中的“撤消”菜单更改为“撤消设置框架拟合选项”,但文档中实际上没有任何变化,所以我还是卡住了。

解决方法

嗯,首先,矩形对象的fit方法有效,我用的挺多的。问题在于引用您的矩形,它必须是代码中我们看不到的东西。尝试将其作为单独的脚本运行:

 var obj = app.activeDocument.rectangles;
    
    for (var i=0; i<obj.length; i++){
        obj[i].fit(FitOptions.FRAME_TO_CONTENT);
    }