1

これが私の試みです:

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プロパティに定義された値が正しくないというメッセージが表示され、スウォッチまたは文字列が必要であるが何も受信されなかったと表示されます。私の見本に何か問題がありますか?

4

2 に答える 2

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プロパティに直接適用します。

(1つの注意点として、textFrames.fillColorはテキストの色を変更しませんが、TextFrameの背景を変更します...各TextFrameのテキストを繰り返し、fillColorを変更したいと思います。)

于 2012-06-21T14:48:41.313 に答える
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();

それが役に立てば幸い、

Loic

于 2012-06-21T14:59:47.567 に答える