ただの備忘記録

忘れないように記録を残します。忘れるから記録に残してます。そして、その記録が役立つといいかな。

【Photoshop JSX Script】ページ番号のテキスト化と振り分け

2015年04月16日 | JavaScript

Photoshop CS5用に作成したスクリプトです。他のバージョンでは動作確認していません。

使い方はAdobeのページをご覧ください。

・ファイル名から数字を抜き出し、それをページ番号とします。
・ページ番号をテキストレイヤーで表示します。
・ページが奇数か偶数かによって表示位置を変更することができます。

ファイル名や用紙のサイズに合わせて初期値による設定が必要です。初期値を参照してください。
・ファイル名のどこからどこまでがページ番号として必要か、取得する位置を指定します。
・ページ番号の表示位置は用紙のサイズに合わせて変更が必要です。単位はmmです。

~~~~~~~~~~以下スクリプト~~~~~~~~~~

//ページ番号をファイル名から取得するスクリプト
var defUnit = preferences.rulerUnits;
//preferences.rulerUnits = Units.PIXELS; //単位設定(ピクセル)
preferences.rulerUnits = Units.MM; //単位設定(mm)
setPageNumber();
preferences.rulerUnits = defUnit;

function setPageNumber() {
    //ファイル名を取得
    var doc = activeDocument;
    var docName = doc.name;
    
    //初期値
    //ページ番号をファイル名から取得する位置
    //例:xx00.psdの場合(3文字目から4文字目→開始位置=3、終了位置=4)
    //例:x000x.psdの場合(2文字目から4文字目→開始位置=2、終了位置=4)
    var st = 2; //開始位置
    var ed = 5; //終了位置
    //表示位置(単位に従う)
    var posX = 130; //左からの位置
    var posY = 360; //上からの位置
    //var posX = doc.width / 2; //ページの中央
    //var posY = doc.height / 2; //ページの中央
    //ページの振り分けをする場合の表示位置(不要な場合は同じ数値にする)
    var posX0 = 225; //偶数ページ(右ページ)
    var posX1 = 10; //奇数ページ(左ページ)

    //ページ番号を取得
    var pageS = docName.substring(st-1,ed); //文字列
    var pageN = parseInt(pageS,10); //数値化
    
    //ページの振り分けをする場合の表示位置
    if (posX0 != posX1) {
        if ((pageN % 2) == 0) {
            posX = posX0; //偶数ページ
        } else {
            posX = posX1; //奇数ページ
        }
    }
    
    //レイヤーを取得
    var layerObj = doc.artLayers;
    
    //ページ番号のレイヤー作成
    var newLayer = layerObj.add(); // 新規レイヤーを追加
    newLayer.kind = LayerKind.TEXT; // レイヤー種別をテキストレイヤーに設定
    newLayer.textItem.contents = "- " + pageS + " -"; // テキストレイヤーに表示する文字列
    newLayer.textItem.position = Array(posX, posY); // レイヤー位置を指定(配列)
    newLayer.textItem.font = "MS-Gothic"; // フォント名
    newLayer.textItem.size = 14; // フォントサイズ
    newLayer.textItem.antiAliasMethod.NONE; //アンチエイリアス
    newLayer.textItem.justification.CENTER; //行揃え
}