Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

210
Visualizações
Extendsript - Adobe Illustrator - Change Character Font Family/Style for each word inside TextFrame

I'm new to AI and scripting. I have a template I'm starting with. Inside this template, there is a TextFrame (called CITIES_1). Inside here is template text like:

CITY 1 123 Address Rd. MyCity, MyState MyZip

CITY 2 567 Address Rd. MyCity2, MyState2 MyZip2

The CITY 1 header is Helvetica Neue LT Std / 75 Bold The rest of the info is Helvetica Neue LT Std / 55 Roman

I'm trying to dynamically change this content to city information I have in a file.

I've tried changing the TextFrame.contents but it uses the first font family/style for the whole thing. Any idea on how to change the data while keeping the same "formatting"?

TIA!

var helBold = app.textFonts.getByName("HelveticaNeueLTStd-Bd");
var helRoman = app.textFonts.getByName("HelveticaNeueLTStd-Roman");
var bold = myDoc.characterStyles.add({ name: "HelveticaNeueLTStd-Roman" });
var roman = myDoc.characterStyles.add({ name: "HelveticaNeueLTStd-Roman" });
var currTF = templateLayer.textFrames.getByName("CITIES_1");
currTF.contents = "MYCITY\r123 MyAddress Dr.\rMyCity, ST 12345\r555.555.5555\r";
bold.applyTo(currTF.words[1]);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

From your code I suppose you have a city name on every second row (starts from the first row):

MYCITY

123 MyAddress Dr.

MyCity, ST 12345

555.555.5555

And you want to apply some style on every first word of each second row. Something like this:

MYCITY

123 MyAddress Dr.

MyCity, ST 12345

555.555.5555

It can be done with this code:

var doc = app.activeDocument;

// pick the text frame and fill it with the text
var curTF = doc.pageItems.getByName('CITIES_1');
curTF.contents = 'MYCITY\r123 MyAddress Dr.\rMyCity, ST 12345\r555.555.5555';

// make two styles
var roman = make_style('roman', 'ArialMT', 10);
var bold = make_style('bold', 'Arial-BoldMT', 14);

// apply style 'roman' on the text
roman.applyTo(curTF.textRange, true);

// loop through the text and apply the style 'bold'
// on the first word of every second paragraph
var paragraphs = curTF.textRange.paragraphs;
for (var i = 0; i < paragraphs.length; i += 2) {
    bold.applyTo(paragraphs[i].words[0], true);
}

function make_style(style_name, font_name, size) {
    var doc = app.activeDocument;
    try { var style = doc.characterStyles.add(style_name) }
    catch(e) { var style = doc.characterStyles.getByName(style_name) }
    style.characterAttributes.size = size;
    style.characterAttributes.textFont = textFonts.getByName(font_name);
    return style;
}

Output:

enter image description here

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda