Illustrator getDocumentInfoAsTextメソッド

ExtendScript

もう平成も昔のECMA3で時が止まったままのIllustratorのExtendScriptですが実はひっそりと新しいメソッドが追加されていたりします。getDocumentInfoAsTextメソッドと呼ばれるものでドキュメント情報パネルの情報がテキストとして取得できる優れものです。通常取れないようなオブジェクトの情報も取得できたりしてとてもで役に立ちそうなもので公式の資料にも全く触れられていませんが私のようなものは知らなくてならないくらいのものです。ちなみに発見したのは私ではなくここのフォーラムで私も見ただけで第一発見者がsttk3(したたか企画氏)と細かいサンプルコードを書いたのはm1b氏です。私はScriptにそこまで詳しく無いのでこうやって先人達の発見の後に続いて記事を書いているだけですがともかくgetDocumentInfoAsTextメソッドは一度ローカルにテキストファイルとして書き出さなければ結果を読み取れません。第一引数に取得した情報の種類(フォントとかカラーとか)第二引数にテキストファイルを書き出すディレクトリ、第三引数はIllustrator上で選択したオブジェクトの情報だけに絞るかどうかのflagですが細かいことはm1b氏のコードを見ると直ぐに理解できるでしょう。それでこのメソッドについて色々調べてみたことについてが本日の本題です。前提としてm1b氏のコードを使って話を進めるので事前に氏のコードを試してください。

かなり最近追加されたメソッド?

Illustratorのいくつかのバージョンで試してみましたが2023と2024では動きましたが2022ではメソッド自体がundefinedと返ってきて動きませんでした。おそらく2023の何処かのタイミングで追加されたようです。

テキストが正常に書き出されないことがある?

第一引数に引き出したい情報を対応した整数で渡すわけですがどうにも組み合わせによって動かないことがあります。とりあえずm1b氏のコードを使ってDocumentInfoType.FONT_DETAILS, DocumentInfoType.DOCUMENT , DocumentInfoType.OBJECTの組み合わせでテキストを書き出します。

書き出し内容

なんとテキストエディットで中身が読み込めました。これなら通常読み込めないプロパティも読み込めます。次にGRADIENT_OBJECTSをこれに追加して書き出してみます。

テキストを読み込めないエラー

テキストエディットで開けませんでした。ただVsCodeで開くと途中まで正常に書き出されているテキストを見ることができて途中から止まっています。途中で書き込みに問題があって止まっているのがわかりました。一応読み込みたい項目の組み合わせによって途中でバグったりするみたいなので大丈夫な組み合わせあるのですが実をいうと最初に書き出したテキストもテキストエディットで開けただけで書き込み自体は途中で止まっています。なので必要な情報をピンポイントで読み出したくてもダメなことが多々ありました。getDocumentInfoAsTextメソッドに他にも引数を渡すことができそうな感じもあるのですが結局よくわかりませんでした。

使い所

重大な欠点がありますがある程度的を絞った情報を取り出すのはなんとかなりそうです。SELECTED_ITEMS_ONLYのflagがあるので選択したアイテムのフォントのみの情報を取り出すとかだったら使えそうです。ただFONTのみといった単体の項目のみを取り出そうとするとFONTの記述の途中で止まるみたいなのでFONT + 他の要素 を渡すと良いかもしれません。といってもそれでも読み込みが保証されるわけでもありません。

まとめ

まず長所です。

  • 通常のJavaScriptから読み込めない項目が読み込める。(フォントの細かい情報、透明マスクの有無、その他色々)
  • ドキュメントの情報をテキストとして読み込むだけなので読み込める情報量の割には速度が速い。
  • 読み込む対象としてドキュメント全体と選択アイテムの二つから選べられる。

以下欠点です。

  • 全ての項目を書き出す前に止まることが多い。
  • 読み込む項目の組み合わせによってはテキストソフトで開けないことがあるので怖い。
  • 公式な文章で触れられていないので不明な部分が多い。

ということで何か見切り発車的に実装された感のあるメソッドなので使用には十分気をつけてください。勿論使いこなせればかなりの武器にはなるはずです。

テスト環境

今回以下の環境でテストしました。

  • MacBookPro intel Monterey
  • MacBookPro M2 Ventura
  • Windows10

それぞれIllustrator 2023と2024でテスト。勿論もしかしたら環境設定とか言語環境によっては上手く動く可能性もあるので一概に今回の結果が全てだとは思わないでください。何か新たに発見しましたら更新します。

参考

How to use getDocumentInfoAsText()

Beer 寄付してサイトを応援する。