DTP駆け込み寺
  1. [13303] 特色の色合い(tint)を取得したい 森野クマ 2011/12/09 09:46
    1. [13305] Re: 特色の色合い(tint)を取得したい (z-) 2011/12/09 12:36
      1. [13306] Re^2: 特色の色合い(tint)を取得したい 森野クマ 2011/12/09 13:39
        1. [13307] Re^3: 特色の色合い(tint)を取得したい (z-) 2011/12/09 15:41
          1. [13308] Re^4: 特色の色合い(tint)を取得したい (z-) 2011/12/09 15:48
            1. [13309] Re^5: 特色の色合い(tint)を取得したい 森野クマ 2011/12/09 16:35
              1. [13310] Re^6: 特色の色合い(tint)を取得したい (z-) 2011/12/09 17:40
                1. [13311] Re^7: 特色の色合い(tint)を取得したい 森野クマ 2011/12/09 17:55
                  1. [13312] Re^8: 特色の色合い(tint)を取得したい (z-) 2011/12/09 18:15
                    1. [13318] Re^9: 特色の色合い(tint)を取得したい 森野クマ 2011/12/12 16:05
                      1. [13320] Re^10: 特色の色合い(tint)を取得したい (z-) 2011/12/12 16:40
                        1. [13321] Re^11: 特色の色合い(tint)を取得したい (z-) 2011/12/12 16:41
                          1. [13322] Re^12: 特色の色合い(tint)を取得したい 森野クマ 2011/12/12 17:52
                            1. [13324] Re^13: 特色の色合い(tint)を取得したい (z-) 2011/12/12 22:57
                              1. [13326] Re^14: 特色の色合い(tint)を取得したい 森野クマ 2011/12/13 10:20
                                1. [13327] Re^15: 特色の色合い(tint)を取得したい (z-) 2011/12/13 10:53
                                  1. [13328] 最終バージョン 森野クマ 2011/12/13 15:09
                                    1. [13329] こっちが本当の最終バージョン 森野クマ 2011/12/13 15:18
                  2. [13313] Re^8: 特色の色合い(tint)を取得したい うんこ 2011/12/11 10:43
                  3. [13315] Re^8: 特色の色合い(tint)を取得したい 疲れるね 2011/12/12 12:15
                    1. [13319] Re^9: 特色の色合い(tint)を取得したい 森野クマ 2011/12/12 16:12
                      1. [13353] Re^10: 特色の色合い(tint)を取得したい るんるん♪ 2011/12/26 09:32

[ 返信 ]

特色の色合い(tint)を取得したい

お世話になります。
特色の色合い(tint)をJavaScriptで取得する方法を探しています。

キャンバスに特色で文字を書いただけのデータを使い、
下記コードを実行してみましたが、
「Error21:undefinedがオブジェクトではありません」というエラーになりました。

alert(activeDocument.pageItems[0].fillColor.spot.color.tint);

どうすればJavaScriptでtintの値が取得できるでしょうか?
ご返答よろしくお願いいたします。

[13303] 森野クマ (2011/12/09 Fri 09:46)

[ 返信 ]


Re: 特色の色合い(tint)を取得したい

色合い……色合い。

alert(activeDocument.pageItems[0].fillColor.colorValue);
でCMYK成分がみられます。配列オブジェクトです。

alert(activeDocument.pageItems[0].fillColor.fillTint;
で濃淡がみられます。ただし100%の時は「-1」になります。

[13305] (z-) (2011/12/09 Fri 12:36) web

[ 返信 ]


Re^2: 特色の色合い(tint)を取得したい

すみません、tintを翻訳したら色合いとでてきたので、
違和感を感じつつも他の訳を知らないので色合いと書きました。

で、上記スクリプトを実行しましたが、同じエラーが返されます……。

alert(activeDocument.pageItems[0].fillTint);
と書き換えると、エラーはなくなりましたが、undefinedと表示されました。

[13306] 森野クマ (2011/12/09 Fri 13:39)

[ 返信 ]


Re^3: 特色の色合い(tint)を取得したい

> alert(activeDocument.pageItems[0].fillTint);
> と書き換えると、エラーはなくなりましたが、undefinedと表示されました。

pageItems[0] が何者なのか、こちらは知りっこないのでエラー回避などしていません。
「塗りカラー」のある選択範囲で試してみてください。グループオブジェクトとかダメですよ。

それと、お使いのバージョンがわかりません。
CS〜CS4あたりはactiveDocumentではなくapp.activeDocumentとしないとInDesign様に伝わらないはず。

[13307] (z-) (2011/12/09 Fri 15:41) web

[ 返信 ]


Re^4: 特色の色合い(tint)を取得したい

あ、確かにpageItems[0].fillColor.fillTint は無駄でした。これでも出るっちゃ出ますが。。

alert(activeDocument); で[Document]と出なければ
app.activeDocument に置換し、ついでに
alert(activeDocument.pageItems[0]); で何が出るか確認してみて下さい。
どのクラスでプロパティがundefinedになっているのか追ってみて下さい。

[13308] (z-) (2011/12/09 Fri 15:48) web

[ 返信 ]


Re^5: 特色の色合い(tint)を取得したい

ご返答ありがとうございます。
ILのバージョンはCS5.5です。

また、新規ドキュメントにテキストを一つしか置いていませんので、
alert(activeDocument.pageItems[0]);
では「TextFrame」が出てきます。

すみません、もっと詳しくスクリプト書けばよかったですね。
前回の質問からも続いてる問題でして、
今、白ノセのオーバープリントの検出をしようとしています。
で、下記スクリプトができました。

ちなみにアピアランスに複数の色がある場合がまだ無理です。
あとは「特色でtiltが0%の時のオーバープリントを解除」できれば、
ある程度使えるものになると考えています。

doc = activeDocument;
count = 0;
for (i=0; i<doc.pageItems.length; i++)
{
if(doc.pageItems[i].typename == "PathItem")
{
fc = doc.pageItems[i].fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{
if(doc.pageItems[i].fillOverprint == true)
{ doc.pageItems[i].fillOverprint = false; count++; }
}
}
else if(doc.pageItems[i].typename == "TextFrame")
{
if(doc.pageItems[i].contents.length > 0)
{
fc = doc.pageItems[i].textRange.fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{
if(doc.pageItems[i].textRange.overprintFill == true)
{ doc.pageItems[i].textRange.overprintFill = false; count++; }
}
}
}
}
alert( count + "個の修正を完了しました。");

[13309] 森野クマ (2011/12/09 Fri 16:35)

[ 返信 ]


Re^6: 特色の色合い(tint)を取得したい

>ILのバージョンはCS5.5
あ…思い出した orz
すいません、頭っからInDesignだと思い込んでレスしてました。またしても。
 この件はお互い学習しましょう w

白のオブジェクト限定ということなら、もうすぐできそうですね。楽しみです。
アピアランスもですが、グループオブジェクトはどうなりますかね。

[13310] (z-) (2011/12/09 Fri 17:40) web

[ 返信 ]


Re^7: 特色の色合い(tint)を取得したい

ご返答ありがとうございます。
すみません、Illustratorの略称はAIでしたね……
紛らわしい書き方してしまいました。

グループ化については問題なく内部まで判別しています。
例えばテキストをアウトライン化しても全部の文字からきちんと
オーバープリントを取れるようになりました。

残すは特色……さらなる賢者の登場をお待ちしております。

[13311] 森野クマ (2011/12/09 Fri 17:55)

[ 返信 ]


Re^8: 特色の色合い(tint)を取得したい

> すみません、Illustratorの略称はAIでしたね……
> 紛らわしい書き方してしまいました。
じゃーなくて、
 最初に、
  アプリと
   バージョンを
    明記すべき、
   というニュアンス
  のつもり
 だったのですが。。

pageItems[i].fillColor.tint で出るみたいです。ESTKをうまく使いましょう。

[13312] (z-) (2011/12/09 Fri 18:15) web

[ 返信 ]


Re^9: 特色の色合い(tint)を取得したい

すみません、AIとIDではスクリプトが違うことは知っていましたが、
バージョンでもそこまで違うとは知りませんでした。
大抵のスクリプトは下位互換がありますので、
大して影響のあることとも思っていませんでした。
今後気を付けます。

> pageItems[i].fillColor.tint で出るみたいです。

何個か前の返信でも書きましたが、これでは出ませんでした。

> ESTKをうまく使いましょう。

これの存在をすっかり忘れていました……。
ちょっと研究してみます。
ご返答ありがとうございました。

[13318] 森野クマ (2011/12/12 Mon 16:05)

[ 返信 ]


Re^10: 特色の色合い(tint)を取得したい

> > pageItems[i].fillColor.tint で出るみたいです。
> 何個か前の返信でも書きましたが、これでは出ませんでした。

ん 手元で試したところ、CS3では出ます(CS3)。
上位バージョンはいま試せないのでナントモですが、大差ないと思われます。

ESTKの話になりますが、例えば、ターゲットのシンプルなオブジェクトだけを選択した状態で
app.activeDocument.selection[0].fillColor.tint;
$.bp();

を実行してみて下さい。処理は2行目で停止して、データブラウザ内で変数「a」の内容が確認できます。
 そこから目的のプロパティまで辿ってってみて下さい。
まず1個で試してみる事です。

[13320] (z-) (2011/12/12 Mon 16:40) web

[ 返信 ]


Re^11: 特色の色合い(tint)を取得したい

まちがいた orz
> app.activeDocument.selection[0].fillColor.tint;
> $.bp();

a=app.activeDocument.selection[0];
$.bp()

でお試しを。失礼。。

[13321] (z-) (2011/12/12 Mon 16:41) web

[ 返信 ]


Re^12: 特色の色合い(tint)を取得したい

たびたびのご返答ありがとうございます。
ご助言いただいた内容を参考にし、さらにESTKを使って調べましたところ、
ついに答えがわかりました!

alert(app.activeDocument.pageItems[0].textRange.fillColor.tint);

これでtintが表示されました。
本当にありがとうございました。
これで先に進めます!

[13322] 森野クマ (2011/12/12 Mon 17:52)

[ 返信 ]


Re^13: 特色の色合い(tint)を取得したい

あー、どっからtextRangeが湧いて出たやら、と思ったら
 ↓すっかり見落としてましたすいません。うっかりですいません。
>キャンバスに特色で文字を書いただけのデータを使い、
>下記コードを実行してみました

[13324] (z-) (2011/12/12 Mon 22:57) web

[ 返信 ]


Re^14: 特色の色合い(tint)を取得したい

> あー、どっからtextRangeが湧いて出たやら、と思ったら
>  ↓すっかり見落としてましたすいません。うっかりですいません。
> >キャンバスに特色で文字を書いただけのデータを使い、
> >下記コードを実行してみました

いえ、とんでもありません。
おかげさまで多大なるヒントをいただけました。
本当にありがとうございました。

このJavaScriptは未完成ながらも、
デザイナー陣にはなかなか好評なようです。
ですので改良の余地はあるものの、
ひとまずはこれでいったん閉めさせていただきます。

ありがとうございました。

[13326] 森野クマ (2011/12/13 Tue 10:20)

[ 返信 ]


Re^15: 特色の色合い(tint)を取得したい

> このJavaScriptは未完成ながらも、
> デザイナー陣にはなかなか好評なようです。
> ですので改良の余地はあるものの、
> ひとまずはこれでいったん閉めさせていただきます。

締めとして、一旦まとまったそのコードをここに公開して頂くとよろしいかと ^

[13327] (z-) (2011/12/13 Tue 10:53) web

[ 返信 ]


最終バージョン

> 締めとして、一旦まとまったそのコードをここに公開して頂くとよろしいかと ^

あ、そうですね、では最終バージョンをこちらに。

doc = app.activeDocument;
count = 0;
for (i=0; i<doc.pageItems.length; i++)
{
if(doc.pageItems[i].typename == "PathItem")
{
fc = doc.pageItems[i].fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{ doc.pageItems[i].fillOverprint = false; count++; }
}
else if(doc.pageItems[i].typename == "TextFrame")
{
if(doc.pageItems[i].contents.length > 0)
{
fc = doc.pageItems[i].textRange.fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{ doc.pageItems[i].textRange.overprintFill = false; count++; }
else if(doc.pageItems[i].textRange.fillColor.tint == 0)
{ doc.pageItems[i].textRange.overprintFill = false; count++; }
}
}
}
alert( count + "個の修正を完了しました。");

[13328] 森野クマ (2011/12/13 Tue 15:09)

[ 返信 ]


こっちが本当の最終バージョン

書き込んだあとで気づきました。
「特色のオブジェクトの白ノセを解除してない」
ということに……。

ってことでそれもできるように付け加えました。
こっちが本当の最終バージョン。

------------------------------------------

doc = app.activeDocument;
count = 0;
for (i=0; i<doc.pageItems.length; i++)
{
if(doc.pageItems[i].typename == "PathItem")
{
fc = doc.pageItems[i].fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{ doc.pageItems[i].fillOverprint = false; count++; }
else if(doc.pageItems[i].fillColor.tint == 0)
{ doc.pageItems[i].fillOverprint = false; count++; }
}
else if(doc.pageItems[i].typename == "TextFrame")
{
if(doc.pageItems[i].contents.length > 0)
{
fc = doc.pageItems[i].textRange.fillColor;
if((fc.cyan == 0 && fc.magenta == 0
&& fc.yellow == 0 && fc.black == 0)
|| fc.gray == 0)
{ doc.pageItems[i].textRange.overprintFill = false; count++; }
else if(doc.pageItems[i].textRange.fillColor.tint == 0)
{ doc.pageItems[i].textRange.overprintFill = false; count++; }
}
}
}
alert( count + "個の修正を完了しました。");

[13329] 森野クマ (2011/12/13 Tue 15:18) web

[ 返信 ]


Re^8: 特色の色合い(tint)を取得したい

> 残すは特色……さらなる賢者の登場をお待ちしております。
ばかじゃないのか?
賢者にはお金はいらないとでも?
アピアランスをjavascriptでどうこうはできないから、
お金払ってどこかでプラグインでもかいてもらえば〜

[13313] うんこ (2011/12/11 Sun 10:43)

[ 返信 ]


Re^8: 特色の色合い(tint)を取得したい

情報提供者をばかにしてますね。
御礼もないようですし・・・

[13315] 疲れるね (2011/12/12 Mon 12:15)

[ 返信 ]


Re^9: 特色の色合い(tint)を取得したい

> 情報提供者をばかにしてますね。

私自身が「情報提供者」のつもりなのですし、ここは「情報提供者同士の互助会」であって、あなたのように罵倒しかできない人が罵倒する場所ではないと思いますが。

現に私は「CMYKまたはグレースケールにおける白ノセのオーバープリントを解除するScript」のコードを公開しています。これはmacintosh版ではスクリプトが存在するようですが、JavaScript版は探しても見つからなかったので、「情報提供者として」ここで公開し、さらなる改良をすべく質問させていただいています。もしそのようなスクリプトがすでに無料で存在しているのであれば、ぜひ教えてください。

一切有用な情報を提供しない人から、例え完成していないとはいえ、一切見返りを求めず、Illustratorの環境を改良しようとしている人に対して罵倒していい権利などないはずです。馬鹿にしているのは、あなたの方です。

[13319] 森野クマ (2011/12/12 Mon 16:12)

[ 返信 ]


Re^10: 特色の色合い(tint)を取得したい

誰にも頼まれてないのに勝手にクソコードさらして身勝手に改良の方法を求めたあげく、私のやっていることはみんなの役に立つことだと信じているので、それを冒涜する権利はあなたがたにはない!

って、確信犯だな。

「一切有用な情報を提供しない人から罵倒していい権利などないはずです」って、情報を提供することが、いつから義務化されたんだよ。

相変わらず、こういう勘違いした脳みそが増殖しつづけてるな。

はっきりと言うが、権利があるからおまえを罵倒?してるんじゃない。
単純に、冷静に、社会通念に照らし合わせてみて、おまえの態度が無礼極まりないから怒ってるんだよ、上の人たちは。

そんなことも分からない馬鹿が、「ぼくちゃんすごいんです、スクリプト書けちゃうんです」ってマヌケ面して自己顕示する場所じゃないんだよ、ここは。

まぁ、この書き込みも消されるだろうけどな。

DTP書き込み寺に多くを求めるのは酷だってことは分かってるよ。

[13353] るんるん♪ (2011/12/26 Mon 09:32)