コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

049.【ID】【Acrobat】フォーム作成用スクリプト色々

書いたコード

InDesign

タブオーダー並べ替え

// テキストボックス01→ラジオボタン02-01→ラジオボタン02-02→チェックボックス03 のようにする
var doc = app.activeDocument;
var pg = doc.pages[4] // ここでページ指定
var tmp = pg.tabOrder
var arr = pg.tabOrder.sort(function(a, b) {
    var nameA = a.name.replace(/[ァ-ヿ]/g, "");
    var nameB = b.name.replace(/[ァ-ヿ]/g, "");
    if (nameA < nameB) {
        return -1;
    }
    if (nameA > nameB) {
        return 1;
    }
    return 0;
})
pg.tabOrder = arr;

ラジオボタンを別ページに複製

var doc = app.activeDocument
var b = doc.pages[0].radioButtons;
var tgtP = [2, 3, 4] // 複製先のページを指定
for (var i = 0; i < b.length; i++) {
    for (var j = 0; j < tgtP.length; j++) {
        var tmp = b[i].duplicate(tgtP[j]);
        tmp.name = b[i].name;
        tmp.exportValue = b[i].exportValue; // checkBoxesやtextBoxesならこの行は不要
    }
}

Acrobat

全てのチェックボックスラジオボタンのスタイルを十字形+実線に

for (var i = 0; i < this.numFields; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    if (f.type == "radiobutton" || f.type == "checkbox") {
        f.style = style.cr;
        f.borderStyle = border.s;
    }
}

ラジオボタンの場合「同じ名前と選択内容のボタンを同時に選択」設定に

for (var i = 0; i < this.numFields; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    if (f.type == "radiobutton") {
        f.radiosInUnison = true;
    }
}

全てのチェックボックスラジオボタン・テキストを空欄に

for (var i = 0; i < this.numFields; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    if (f.type == "radiobutton" || f.type == "checkbox") {
        f.value = false;
    }
    if (f.type == "text") {
        f.value = "";
    }
}

メモ

フォームに関して、現状InDesignではできないがAcrobatではできる設定が多くある。
また、ラジオボタンをマスターページに置いた状態でPDFを書き出すとInDesignがシャットダウンするという不具合がある(多分)(Win CC2019)。
よってInDesignでフォームの作成とある程度の設定を行った後、Acrobatでさらに設定を加えることになる場合が多い。

Acrobatでのみ可能な設定には例えば以下のようにものがある。
- チェックボックスラジオボタンのスタイル(十字形とか丸形とか)
- チェックボックスラジオボタンの外枠のスタイル(実線とか破線とか)
- ラジオボタンの「同じ名前と選択内容のボタンを同時に選択」
- 字数指定
- 桁区切り・小数点以下桁数などの書式設定
- 中央・右揃え(Id上での設定は反映されず一律左揃えになる)

 

checkBoxesのvalueは多分以下のような挙動になっている。

参考