Skip to main content
Jirosanjp
Inspiring
June 4, 2025
解決済み

inDesignの組版データを16ページの台ごとに一括してプリントしたい

  • June 4, 2025
  • 返信数 1.
  • 548 ビュー

inDesignの組版データを16ページの台ごとに一括してプリントしたいのです。

多ページの組版データを小冊子印刷をして、16ページごとに中綴じの設定でプリントアウトし、手製本をしています。

この16ページの台を何度も以下のように入力し、印刷設定をしてプリントアウトするのを一回の操作でできませんか?

16ページごとに小冊子をプリント>プリントプリセットを確認>範囲を指定>プリント設定>プリントプリセットを選ぶ>OK>プリントと指定しているので

ものすごく時間がかかります。こういうのを自動化したい。

 

ページ範囲は以下の順番です。

・1~16

1732

3348

4964

6580

8196

97112

113128

129144

145160

161176

177192

193208

 

MacOS12.7.6

CanonMG7730

AdobeinDesign2025

    解決に役立った回答 ajabon grinsmith

    こんな感じですかねえ。スクショをもとにちょっと書いてみました。

    var printerPresetName = "蛇太"; // 使用するプリントプリセット名
    var showDialog = false; // 出力画面を 出す:true / 出さない/false
    
    var printerPreset = app.printerPresets.itemByName(printerPresetName);
    if(printerPreset.isValid == false){
        err("そのような名前のプリントプリセットは存在せぬ");
    }
    
    var doc = app.activeDocument;
    if(doc.pages.length % 16 != 0){
        err("ページ数を確認いたせ\n16の倍数でしか出さぬ");
    }
    
    var BookletOpt = doc.printBookletOptions;
    with(BookletOpt){
        autoAdjustMargins = true;
        bookletType = BookletTypeOptions.TWO_UP_SADDLE_STITCH;
        creep = "2mm";
        // pageRange = "1-16";
    }
    
    for(var i = 1; i <= doc.pages.length; i += 16){
        BookletOpt.pageRange = "+" + i + "-" + "+" + (i + 15);
        doc.printBooklet(showDialog, app.printerPresets.itemByName(printerPresetName));
        $.sleep(1000); // なんとなくちょっと待つ
    }
    
    function err(mes){
        alert("error\n" + mes);
        exit();
    }

     

    冒頭の変数ふたつ宣言してるところで

    プリントプリセット名

    プリント画面を出す出さない(true / false)

    を適宜書き換えてみてください。

     

    スクリプトファイル作成にはこれが便利です

    上記をリンク先でコピペしてください。

    https://tama-san.com/jsx_downloader.html

     

    問題なかったら教えてください(なぜ問題がある前提なんだ…)

    返信数 1

    ajabon grinsmith
    Community Expert
    Community Expert
    June 5, 2025

    こんな感じですかねえ。スクショをもとにちょっと書いてみました。

    var printerPresetName = "蛇太"; // 使用するプリントプリセット名
    var showDialog = false; // 出力画面を 出す:true / 出さない/false
    
    var printerPreset = app.printerPresets.itemByName(printerPresetName);
    if(printerPreset.isValid == false){
        err("そのような名前のプリントプリセットは存在せぬ");
    }
    
    var doc = app.activeDocument;
    if(doc.pages.length % 16 != 0){
        err("ページ数を確認いたせ\n16の倍数でしか出さぬ");
    }
    
    var BookletOpt = doc.printBookletOptions;
    with(BookletOpt){
        autoAdjustMargins = true;
        bookletType = BookletTypeOptions.TWO_UP_SADDLE_STITCH;
        creep = "2mm";
        // pageRange = "1-16";
    }
    
    for(var i = 1; i <= doc.pages.length; i += 16){
        BookletOpt.pageRange = "+" + i + "-" + "+" + (i + 15);
        doc.printBooklet(showDialog, app.printerPresets.itemByName(printerPresetName));
        $.sleep(1000); // なんとなくちょっと待つ
    }
    
    function err(mes){
        alert("error\n" + mes);
        exit();
    }

     

    冒頭の変数ふたつ宣言してるところで

    プリントプリセット名

    プリント画面を出す出さない(true / false)

    を適宜書き換えてみてください。

     

    スクリプトファイル作成にはこれが便利です

    上記をリンク先でコピペしてください。

    https://tama-san.com/jsx_downloader.html

     

    問題なかったら教えてください(なぜ問題がある前提なんだ…)

    Jirosanjp
    Jirosanjp作成者
    Inspiring
    June 6, 2025

    ありがとうございます。これでjsxをつくってindesignのスクリプトに入れる…という流れでよろしいでしょうか?

     

    Jirosanjp
    Jirosanjp作成者
    Inspiring
    June 8, 2025

    inDesignのユーティリティーからスクリプトを入れ、出力したいでデータを開く。スクリプトをダブルクリックすると連続して16ページの印刷データが次々とできました。びっくり!テストしてちゃんと出力できているのを確認しました。これで印刷中に他の仕事ができます。ありがとうございました!