Skip to main content
Inspiring
November 8, 2018
Answered

Is there a script to place Used spot colors/WIth name at the bottom of a Artboard?

  • November 8, 2018
  • 2 replies
  • 3218 views

I may be asking this wrong so i'll attach a picture illustrating what i am looking for.
Thanks in advance

This topic has been closed for replies.
Correct answer subieguy2

For your convenience....

/////////////////////////////////////////////////////////////////

// Render Swatch Legend v1.3 -- CC

//>=--------------------------------------

//

//  This script will generate a legend of rectangles for every swatch in the main swatches palette.

//  You can configure spacing and value display by configuring the variables at the top

//  of the script.

//   update: v1.1 now tests color brightness and renders a white label if the color is dark.

//   update: v1.2 uses adobe colour converter, rather than rgb colour conversion for a closer match.

//   update: v1.3 adds multiple colour space values based on array printColors.

//>=--------------------------------------

// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com

// copyright full text here:  http://www.wundes.com/js4ai/copyright.txt

//

// Edits by Adam Green (@wrokred) www.wrokred.com

//

//////////////////////////////////////////////////////////////////

doc = activeDocument,

swatches = doc.swatches,

cols = 4, // number of columns in group

displayAs = "RGBColor",  //or "CMYKColor"

printColors = ["RGB", "CMYK", "LAB", "GrayScale"], // RGB, CMYK, LAB and/or GrayScale

colorSeparator = " ", // Character used to separate the colours eg "|" output = R: XXX|G: XXX|B: XXX

textSize = 10, // output text size value in points

rectRef=null,

textRectRef=null,

textRef=null,

swatchColor=null,

w=150;

h=120,

h_pad = 10,

v_pad = 10,

t_h_pad = 10,

t_v_pad = 10,

x=null,

y=null,

black = new GrayColor(),

white = new GrayColor()

;

black.gray = 100;

white.gray = 0;

activeDocument.layers[0].locked= false;

var newGroup = doc.groupItems.add();

newGroup.name = "NewGroup";

newGroup.move( doc, ElementPlacement.PLACEATBEGINNING );

for(var c=2,len=swatches.length;c<len;c++)

{

    var swatchGroup = doc.groupItems.add();

    swatchGroup.name = swatches.name;

    x= (w+h_pad)*((c-2)% cols);

    y=(h+v_pad)*(Math.round(((c)+.03)/cols))*-1 ;

    rectRef = doc.pathItems.rectangle(y,x, w,h);

    swatchColor = swatches.color;

    rectRef.fillColor = swatchColor;

    textRectRef =  doc.pathItems.rectangle(y- t_v_pad,x+ t_h_pad, w-(2*t_h_pad),h-(2*t_v_pad));

    textRef = doc.textFrames.areaText(textRectRef);

    textRef.contents = swatches.name + "\r" + getColorValues(swatchColor);

    textRef.textRange.fillColor = is_dark(swatchColor)? white : black;

    textRef.textRange.size = textSize;

    rectRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );

    textRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );

    swatchGroup.move( newGroup, ElementPlacement.PLACEATEND );

}

function getColorValues(c)

{

    if(c.typename)

    {

        if (c.typename == "SpotColor") {

        return getColorValues(c.spot.color);

        };

       

        switch(c.typename)

        {

            case "RGBColor": sourceSpace = ImageColorSpace.RGB; colorComponents=[c.red,c.green,c.blue]; break;

            case "CMYKColor": sourceSpace = ImageColorSpace.CMYK; colorComponents=[c.cyan,c.magenta,c.yellow,c.black]; break;

            case "LabColor": sourceSpace = ImageColorSpace.LAB; colorComponents=[c.l,c.a,c.b]; break;

            case "GrayColor": sourceSpace = ImageColorSpace.GrayScale; colorComponents=[c.gray]; break;

        }

        outputColors = new Array();

        for (var i = printColors.length - 1; i >= 0; i--) {

            targetSpace = ImageColorSpace[printColors];

            outputColors = app.convertSampleColor(sourceSpace, colorComponents, targetSpace,ColorConvertPurpose.previewpurpose);

            for (var j = outputColors.length - 1; j >= 0; j--) {

                outputColors = printColors.charAt(j)+": "+Math.round(outputColors);

                if (j == outputColors.length -1) {

                    outputColors += "\r";

                };

            };

            outputColors = outputColors.join(colorSeparator);

        };

        return outputColors.join("");

    }

    return "Non Standard Color Type";

}

function is_dark(c){

if(c.typename)

{

    switch(c.typename)

    {

        case "CMYKColor":

        return (c.black>50 || (c.cyan>50 &&  c.magenta>50)) ? true : false;

        case "RGBColor":

        return (c.red<100  && c.green<100 ) ? true : false;

        case "GrayColor":

        return c.gray > 50 ? true : false;

        case "SpotColor":

        return is_dark(c.spot.color);

        return false;

    }

}

}

2 replies

subieguy2
subieguy2Correct answer
Inspiring
November 8, 2018

For your convenience....

/////////////////////////////////////////////////////////////////

// Render Swatch Legend v1.3 -- CC

//>=--------------------------------------

//

//  This script will generate a legend of rectangles for every swatch in the main swatches palette.

//  You can configure spacing and value display by configuring the variables at the top

//  of the script.

//   update: v1.1 now tests color brightness and renders a white label if the color is dark.

//   update: v1.2 uses adobe colour converter, rather than rgb colour conversion for a closer match.

//   update: v1.3 adds multiple colour space values based on array printColors.

//>=--------------------------------------

// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com

// copyright full text here:  http://www.wundes.com/js4ai/copyright.txt

//

// Edits by Adam Green (@wrokred) www.wrokred.com

//

//////////////////////////////////////////////////////////////////

doc = activeDocument,

swatches = doc.swatches,

cols = 4, // number of columns in group

displayAs = "RGBColor",  //or "CMYKColor"

printColors = ["RGB", "CMYK", "LAB", "GrayScale"], // RGB, CMYK, LAB and/or GrayScale

colorSeparator = " ", // Character used to separate the colours eg "|" output = R: XXX|G: XXX|B: XXX

textSize = 10, // output text size value in points

rectRef=null,

textRectRef=null,

textRef=null,

swatchColor=null,

w=150;

h=120,

h_pad = 10,

v_pad = 10,

t_h_pad = 10,

t_v_pad = 10,

x=null,

y=null,

black = new GrayColor(),

white = new GrayColor()

;

black.gray = 100;

white.gray = 0;

activeDocument.layers[0].locked= false;

var newGroup = doc.groupItems.add();

newGroup.name = "NewGroup";

newGroup.move( doc, ElementPlacement.PLACEATBEGINNING );

for(var c=2,len=swatches.length;c<len;c++)

{

    var swatchGroup = doc.groupItems.add();

    swatchGroup.name = swatches.name;

    x= (w+h_pad)*((c-2)% cols);

    y=(h+v_pad)*(Math.round(((c)+.03)/cols))*-1 ;

    rectRef = doc.pathItems.rectangle(y,x, w,h);

    swatchColor = swatches.color;

    rectRef.fillColor = swatchColor;

    textRectRef =  doc.pathItems.rectangle(y- t_v_pad,x+ t_h_pad, w-(2*t_h_pad),h-(2*t_v_pad));

    textRef = doc.textFrames.areaText(textRectRef);

    textRef.contents = swatches.name + "\r" + getColorValues(swatchColor);

    textRef.textRange.fillColor = is_dark(swatchColor)? white : black;

    textRef.textRange.size = textSize;

    rectRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );

    textRef.move( swatchGroup, ElementPlacement.PLACEATBEGINNING );

    swatchGroup.move( newGroup, ElementPlacement.PLACEATEND );

}

function getColorValues(c)

{

    if(c.typename)

    {

        if (c.typename == "SpotColor") {

        return getColorValues(c.spot.color);

        };

       

        switch(c.typename)

        {

            case "RGBColor": sourceSpace = ImageColorSpace.RGB; colorComponents=[c.red,c.green,c.blue]; break;

            case "CMYKColor": sourceSpace = ImageColorSpace.CMYK; colorComponents=[c.cyan,c.magenta,c.yellow,c.black]; break;

            case "LabColor": sourceSpace = ImageColorSpace.LAB; colorComponents=[c.l,c.a,c.b]; break;

            case "GrayColor": sourceSpace = ImageColorSpace.GrayScale; colorComponents=[c.gray]; break;

        }

        outputColors = new Array();

        for (var i = printColors.length - 1; i >= 0; i--) {

            targetSpace = ImageColorSpace[printColors];

            outputColors = app.convertSampleColor(sourceSpace, colorComponents, targetSpace,ColorConvertPurpose.previewpurpose);

            for (var j = outputColors.length - 1; j >= 0; j--) {

                outputColors = printColors.charAt(j)+": "+Math.round(outputColors);

                if (j == outputColors.length -1) {

                    outputColors += "\r";

                };

            };

            outputColors = outputColors.join(colorSeparator);

        };

        return outputColors.join("");

    }

    return "Non Standard Color Type";

}

function is_dark(c){

if(c.typename)

{

    switch(c.typename)

    {

        case "CMYKColor":

        return (c.black>50 || (c.cyan>50 &&  c.magenta>50)) ? true : false;

        case "RGBColor":

        return (c.red<100  && c.green<100 ) ? true : false;

        case "GrayColor":

        return c.gray > 50 ? true : false;

        case "SpotColor":

        return is_dark(c.spot.color);

        return false;

    }

}

}

cbishop01Author
Inspiring
November 8, 2018

I downloaded the ZIP file with all the scripts in it. I am currently Editing this one.  Thank you for this. It seems this will do just what i want it to do.

subieguy2
Inspiring
November 8, 2018

You could use this script that is already available... and modify to suit your needs....

Scripting Illustrator: Generate Color Legend from Swatches