Indesign从所选对象中获取颜色?

时间:2014-11-28 08:51:01

标签: javascript scripting adobe-indesign

我搜索了stackoverflow和adobe社区,找到了答案。我无法弄清楚,如何在Indesign中获取所选对象的颜色。

我现在知道我需要检查它是一个色板还是添加了正常颜色。但我不知道如何在每种情况下将CMYK中的颜色分开。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

对象的fillColor始终报告为Swatch,即使它不在“色板”列表中也是如此。要执行的第一个测试是Color;您可以使用instanceofhasOwnProperty。下一个合理的测试是色彩空间是否为CMYK。

评论中提到的Gradient稍微复杂一些。它包含gradientStops列表,每个列表都有stopColor(简单颜色或混合链接)和位置。如果它是一种简单的颜色,您可以像使用普通填充一样检索其值。

if (app.documents.length && app.selection.length >= 1 && app.selection[0].hasOwnProperty('fillColor'))
{
    swatch = app.selection[0].fillColor;
    if (swatch instanceof Color &&
        swatch.space == ColorSpace.CMYK)
        alert ("color: "+swatch.colorValue.join(','));
    else if (swatch instanceof Gradient)
    {
        list = [];
        for (i=0; i<swatch.gradientStops.length; i++)
            if (swatch.gradientStops[i].stopColor instanceof Color)
                list.push (i+' = '+swatch.gradientStops[i].stopColor.colorValue.join(','));
            else
                list.push (i+' = ?');
        alert ("gradient:\r"+list.join('\r'));
    }
}