这是我的尝试:
function makeAllTextBlack() {
var document = app.activeDocument,
textFrames = document.textFrames,
nbTextFrames = textFrames.length,
swatch = document.swatches.item("C=100 M=100 Y=100 K=100"),
i;
for (i = 0; i < nbTextFrames; i +=1) {
textFrames[i].fillColor = swatch;
}
}
makeAllTextBlack();
在ExtendScript Toolkit中运行此脚本时,它会抱怨为fillColor
属性定义的值不正确,说它期望Swatch或String但没有收到任何内容。我的色板有问题吗?
答案 0 :(得分:2)
你得到的样本是无效的,即使你试图通过名字(itemByName)得到它也不要问我为什么,但最好使用Color对象。例如,您可以这样做来创建颜色:
var color = document.colors.itemByName("myblack");
if(color==null){
color = document.colors.add();
color.name = "myblack";
color.colorValue = [100,100,100,100];
}
然后将其直接应用于fillColor属性。
(一句话,textFrames.fillColor不会改变文本颜色,但TextFrame背景......我想你想迭代每个TextFrame上的文本并改变它们的fillColor。)
答案 1 :(得分:1)
使用颜色对象似乎可以解决问题:
function makeAllTextBlack() {
var doc, blackColor;
if( !app.documents.length ){ return; }
doc = app.activeDocument;
blackColor = doc.colors.itemByName ( "fullBlack" );
if ( !blackColor.isValid )
{
blackColor = doc.colors.add( {colorSpace:ColorSpace.CMYK, model:ColorModel.PROCESS, colorValue:[100,100,100,100], name:"fullBlack"} );
}
try
{
doc.stories.everyItem().fillColor = blackColor;
alert("done");
}
catch(e)
{
alert(e+" "+e.line);
}
}
makeAllTextBlack();
希望它有所帮助,
卢瓦克