[英]in indesign javascript. how to select some text in textframe and color this
第一次,我使用文本框架并为文本和背景着色。 但是我只需要为第一个单词涂色,而第二次我就不能只为所选单词涂色。 请帮我! 谢谢。
var textHeaderTf;
try{
textHeaderTf = headerTf.paragraphs.item(0);
if(textHeaderTf!=undefined && textHeaderTf!=null)
{
headerTf.parentStory.insertionPoints.item(-1).contents = 'myNewText';
// textHeaderTf.fillColor = myColorA;
textHeaderTf.strokeColor = myColorB;
}
}catch(e){log.write('setHeader font-color error7'+e);}
try{
textHeaderTfWord = textHeaderTf.words[0];//headerTf.paragraphs.item(1);
if(textHeaderTfWord!=undefined && textHeaderTfWord!=null)
{
textHeaderTfWord.fillColor = myColorA;
textHeaderTfWord.strokeColor = myColorA;
}
}catch(e){log.write('setHeader font-color error8'+e);}
这取决于您要按什么顺序工作。
第一次尝试是在开始处插入文本,然后为整个段落设置颜色(您的textHeaderTf
)。
在第二次尝试中,仅设置第一个单词的颜色。
如果要在开始时添加文本并立即将其上色,请使用以下命令:
textHeaderTf.insertionPoints.item(0).fillColor = myColorA;
textHeaderTf.insertionPoints.item(0).contents = "Colored text!";
这是因为InsertionPoint
行为类似于文本光标 :就像在界面本身中一样,您可以“设置”属性(例如颜色,字体或文本大小),然后立即在相同位置“键入”某些文本。
您不仅可以在段落开头,还可以在任何InsertionPoint上执行此操作。 例如,在第三个单词之前添加文本的工作方式相同。
textHeaderTf.words.item(2).insertionPoints.item(0).fillColor = myColorA;
textHeaderTf.words.item(2).insertionPoints.item(0).contents = "more colored text here ";
如果要给多个现有单词上色,则可以通过循环将它们除掉:
for (i=0; i<5; i++)
textHeaderTf.words.item(i).fillColor = myColorA;
请记住,尽管如此,您仍在处理单个单词 。 如果您用
for (i=0; i<5; i++)
textHeaderTf.words.item(i).underline = true;
您会看到,是的,这些单词都带有下划线-但也许您也想在它们之间的空格下划线。
为此,您可以通过定位第一个词和最后一个词之间的字符范围来一次性定位整个文本块:
textHeaderTf.characters.itemByRange(textHeaderTf.words.item(1),
textHeaderTf.words.item(4)).underline = true;
InDesign足够聪明,可以在索引words
和characters
之间进行翻译; 您还将看到它们之间的空格也带有下划线,因为它们是您所指代字符范围的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.