5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

パス文字列を画像に置換する

Last updated at Posted at 2015-02-14

 えー、今回のネタはコンタクトシート作り用にやってみたネタでございます。

 コンタクトシートってのは簡単に言うと画像の一覧です。InDesignのJavascriptサンプルの中にもあるので使用されている人もいるかと思います。

 単純な画像一覧であればサンプルスクリプトを使っちゃうのも手ですが仕事で画像のリネームをした際の「確認用リスト」なんかを作る時には超絶面倒なわけです。

 Htmlなんかを使ってさくっと好きな一覧を作ってもいいんですが、何枚もの用紙にまたがるような一覧を綺麗に印刷するのは大変です。そこで今回は、

「InDesign で作成された表のセルに書かれたパス文字列を画像に置換する」

 という方法をとってみることにします。これならタグテキストなんかでさくっと好きな体裁の表を作成し、あらかじめ記述しておいた文字列をリンク画像に変換することで画像を手軽に配置できます。

 こーんな表を作っておいて、

imageTable1.png

 表を選択してスクリプトを実行すると、

imageTable2.png

 こんな感じになっちゃいますよ。さてそれでは肝心のスクリプトをば、

・エラー処理とかはいつもどおり省略しております
・今回はサンプル画像にあるような表に対しての決め打ち処理で作ってます
・動作確認はWindows版CS6で行いました

path2image.jsx
// パスが書かれているセルのパス文字列を
// リンク画像に置換する
// Date 2015/2/4 by happyscript

//選択されている表組を対象とします
var myTable = app.selection[0];

//今回対象となる表の一行目はヘッダーなので無視(i=1)
for (var i=1;i<=myTable.bodyRowCount;i++) {
		//列の1番目cells[0]にパス文字列が記述されています
        var myObj = myTable.rows[i].cells[0];
        
        //段落テキストを取得
        var linkPath = myObj.paragraphs[0].texts.item(0).contents;
        
        //文字列消去(ここでparagraphsがnullになります)
        myObj.paragraphs[0].texts.item(0).contents = "";
        
        //アクティブセルにフレームを追加
        var myFrm = myObj.insertionPoints.item(-1).textFrames.add(); 
        
        //フレームのサイズを整えます
        myFrm.visibleBounds = ["1cm","1cm","4cm","5cm"];
        
        //フレームに画像を配置します
        myFrm.place(linkPath);
}

 終わった。はいこれだけす。すみません。画像のフィット処理やなんやかんやはご自由に変更してお楽しみくださいませ~!

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?