【问题标题】:Fit graphic frame to content InDesign使图形框架适合内容 InDesign
【发布时间】:2021-04-18 00:53:55
【问题描述】:

我正在尝试为 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 中的撤消菜单更改为“撤消设置框架拟合选项”,但文档中实际上没有任何变化,所以我还是卡住了。

【问题讨论】:

  • 我发现对everyItem() 应用某些东西经常不起作用。尝试遍历集合并一次应用一个。 fit 方法确实适用于矩形。还要确保在放置图形后应用它
  • @NicolaiKant 这就是我在上述函数的最后两个版本中尝试做的事情,但它们也没有做任何事情。如果everyItem() 是粗略的,那么我的最后一个函数应该 可以工作,但它什么也没做。我已经测试了这个循环,我知道它正在识别 Rectangle 对象,所以 obj[1] 应该被识别为一个矩形并与 fit() 一起使用,但它没有做任何事情。顺便说一句,我使用相同循环的副本将特定样式应用于图形,它可以正常工作,所以我觉得我在这里做错了。
  • 我之前遇到过 fit 方法的问题,请记住,我也没有成功地让它在我的脚本中工作。我最终通过几何边界属性调整了框的大小(即让我的脚本计算每个框所需的大小,然后将几何边界拟合到该大小)。
  • @mdomino 这听起来是个好主意,但我没有足够的经验知道如何做到这一点。我尝试使用 resolve 来获取左上角和右下角的锚点,然后使用 reframe(基于我在脚本 API 文档中找到的重构示例),但它似乎没有做任何事情。谢谢你的建议,我会继续玩的。

标签: javascript adobe-indesign extendscript


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2014-07-30
    • 2013-03-20
    • 1970-01-01
    相关资源
    最近更新 更多