Как применить цвет заливки к текстовому объекту в Illustrator?

Вопрос или проблема

Я пытаюсь изменить цвет текстового объекта. Цвет PANTONE 185 C присутствует в образцах, и если тип объекта – CompoundPathItem, то это работает. Но когда выбран текстовый объект, он теряет цвет (то есть превращается в объект без заливки).

var doc = app.activeDocument;
var swatches = doc.swatches;

if (doc.selection.length > 0) {
    var targetItem = doc.selection[0];

    if (targetItem.typename == "PathItem" || targetItem.typename == "CompoundPathItem") {
        var colorFound = false;

        for (var i = 0; i < swatches.length; i++) {
            if (swatches[i].name == "PANTONE 185 C") {
                alert("PANTONE 185 C");
                targetItem.fillColor = swatches[i].color;
                colorFound = true;
                break;
            }
        }

        if (!colorFound) {
            alert("PANTONE 185 C не найден в образцах");
        }
    } else {
      
      alert("применить цвет заливки");
      var textRange = targetItem.textRange;
      applyFillColor(textRange, swatches[i].color);
      
    }
    
} else {
    alert("выберите объект");
}

function applyFillColor(textRange, color) {
    for (var i = 0; i < textRange.characters.length; i++) {
        textRange.characters[i].fillColor = color;
    }
}

Ответ или решение

Для применения цвета заливки к текстовому объекту в Adobe Illustrator через скрипт JavaScript, необходимо учитывать несколько особенностей. Ваша задача заключается в том, чтобы изменить цвет текста на PANTONE 185 C, и это можно сделать, используя правильный подход к текстовым объектам, так как они имеют свои особенности в управлении цветом.

Вот полный код, который вы можете использовать для достижения вашей цели:

var doc = app.activeDocument;
var swatches = doc.swatches;

if (doc.selection.length > 0) {
    var targetItem = doc.selection[0];

    if (targetItem.typename == "PathItem" || targetItem.typename == "CompoundPathItem") {
        var colorFound = false;

        for (var i = 0; i < swatches.length; i++) {
            if (swatches[i].name == "PANTONE 185 C") {
                targetItem.fillColor = swatches[i].color;
                colorFound = true;
                break;
            }
        }

        if (!colorFound) {
            alert("PANTONE 185 C не найден в палитре");
        }
    } else if (targetItem.typename == "TextFrame") {
        alert("Применяем цвет заливки к тексту");
        var textRange = targetItem.textRange;
        applyFillColor(textRange, swatches);
    } else {
        alert("Выбрано не корректное название объекта");
    }

} else {
    alert("Пожалуйста, выберите объект");
}

function applyFillColor(textRange, swatches) {
    var colorFound = false;

    for (var j = 0; j < swatches.length; j++) {
        if (swatches[j].name == "PANTONE 185 C") {
            for (var i = 0; i < textRange.characters.length; i++) {
                textRange.characters[i].fillColor = swatches[j].color;
            }
            colorFound = true;
            break;
        }
    }

    if (!colorFound) {
        alert("PANTONE 185 C не найден в палитре для текста");
    }
}

Объяснение кода:

  1. Проверка выбора: Код начинает с проверки, есть ли выбранные объекты в документе. Если нет, выводится сообщение об этом.

  2. Работа с объектами: Затем мы проверяем тип выбранного объекта:

    • Если это PathItem или CompoundPathItem, мы ищем и применяем цвет заливки.
    • Если это TextFrame, то мы вызываем функцию applyFillColor, чтобы изменить цвет текста.
  3. Функция applyFillColor: Эта функция перебирает каждую букву в текстовом объекте и применяет к ней нужный цвет. При этом снова ищем цвет PANTONE 185 C в палитре.

  4. Сообщения об ошибках: Если нужный цвет не найден, выводится соответствующее уведомление.

Таким образом, данный код позволяет корректно работать с текстовыми объектами в Illustrator и изменять их цвет заливки на заданный PANTONE цвет. Если будут возникать дополнительные вопросы или трудности, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...