【InDesign】ai/pdfのアートボード/ページを指定して同一ファイルに再リンクするスクリプト | Blue-Screeeeeeen․net | よそいちのDTPメモ

トップページ » InDesign » 【InDesign】ai/pdfのアートボード/ページを指定して同一ファイルに再リンクするスクリプト

【InDesign】ai/pdfのアートボード/ページを指定して同一ファイルに再リンクするスクリプト

公開日:2017年3月27日 最終更新日:2018年6月8日

 アートボードを使用したaiファイル、または複数ページのPDFをInDesignに配置しているとき、「ページ数を変えて再リンク」するのは思いのほか面倒です。通常、「配置」([リンク]パネルメニューの[再リンク…])→「配置するファイルを選ぶ」→「[読み込みオプションを表示]にチェック」→「ページ数指定」の4ステップが必要ですが、これがどうにも辛かったので、ページ数だけ変更して再リンクするスクリプトを作りました。


 ざっくり計測ですが、1枚あたり約10秒の短縮になりました。


リリースノート/ダウンロード

2017.03.27 | v1リリース

2018.06.08 | v2
 ・Mac/Win版を統合
 ・トリミング形式は、配置しているファイルの設定を維持して再配置するように

ダウンロード


使い方

1.配置されている複数アートボードのaiファイル、複数ページのpdfを選択します。(ダイレクト選択ツールで中身を選択しても、選択ツールでフレームを選択しても可)

ai/pdfが配置されているフレーム(または中身)を選択してスクリプトを実行
ai/pdfが配置されているフレーム(または中身)を選択してスクリプトを実行


2.スクリプトを実行すると、ページ番号を入力するダイアログが表示されるので、変更したいページ数を入力します※。

※アートボード/ページの数を超える数値を入力すると、1ページ目に再リンクされます。

変更したいページ数を入力
変更したいページ数を入力


3.ai/pdfが、指定したページ数に再リンクされます。

指定したページ数に再リンクされる
指定したページ数に再リンクされる


使用できるのはaiファイルかpdfだけで、それ以外の画像例えばpsd、jpg、pngではアラートが出て中断されます。
aiファイルかpdf以外の場合はアラート



使用例


スクリプト本文

CS4動作時の注意点

CS4〜CS6で動作を確認していますが、CS4に関しては本エントリ記載のコードそのままでは使えません。「app.pdfPlacePreferences.pdfCrop = PDFCrop.CROP_CONTENT_VISIBLE_LAYERS;」という文がありますが、この「CROP_CONTENT_VISIBLE_LAYERS」はCS4では対応していないトリミング方法を指定するコードです。


そのため、この部分は「app.pdfPlacePreferences.pdfCrop = PDFCrop.CROP_ART;」のように、CS4に対応した指定に書き換えておく必要があります。

CS4では一部変更が必要
CS4では一部変更が必要


/*読み込みオプションでページ数を指定して再リンク
用途:選択した配置済みaiやpdfのページ数を変更したいとき
仕様:配置されているファイルと同じものに再リンクするため、他のai/pdfを指定することはできません。
変更できるのはアートボード番号およびページ数のみ。
入力したページ数がアートボード数を超えていた場合は1ページめに再リンクされます。
動作確認:InDesign CS4~6、CS4は条件付き

★重要!【動作対象オブジェクト】
・ダイレクト選択ツールで、ai、pdfが配置されているグラフィックフレームの中身を選択しているとき
・選択ツールで、ai、pdfが配置されているグラフィックフレームを選択しているとき
・グループを選択していて、そのなかにai,pdfがあるとき。ただし複数画像が含まれる場合は一番上のものが再リンクされる。
(上記の理由から、グループに含まれるai、pdfはダイレクト選択ツールで都度選択したほうが安全)

2018.06.07 | V2 | Mac/Win両方で共通して使用可能に。トリミングは変更せず配置されている状態を維持するように変更
*/

//1.選択しているものの情報、パスを取得。オブジェクト種類の条件分岐もここでやってしまう
function getObject(){
  var sel=app.activeDocument.selection[0];
    switch(sel.constructor.name){
      case "PDF":
        var selPath=sel.itemLink.filePath;
      break;
      case "Group":
        var selPath=sel.allGraphics[0].itemLink.filePath;
        break;
      case "Image":
        alert("PDF、AI以外の画像を選択しています。")
        exit();
      break;
      default:
        var selPath=sel.graphics[0].itemLink.filePath;
        break;
      }
    return [sel,selPath];
  };

try{
  //2.「1.」を呼び出す
  var GO=getObject();
    /*
    GO[0]…選択オブジェクト
    GO[1]…選択オブジェクトのファイルパス
    */

  //3.ファイルパスを整形
  if($.os.match(/Win/)!=null){
    var newPath=GO[1].split("\\");
    }else{
      var newPath=GO[1].split(":");
      }
    newPath=newPath.join("/");
    
  //4.ページ数、オプションを指定
  var promp=prompt("再リンクするアートボード番号(PDFの場合はページ数)を入力","1");
  var newPage = promp.replace(/[A-Za-z0-9]/g, function(s) {
    //全角数字対応
    return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
    });
    newPage=Number(newPage);

//app.pdfPlacePreferences.pdfCrop = PDFCrop.CROP_CONTENT_VISIBLE_LAYERS;//トリミング範囲
     /*トリミング範囲のプロパティ
     CROP_ART アート
     CROP_BLEED 裁ち落とし
     CROP_CONTENT バウンディングボックス(~CS4)
     CROP_CONTENT_VISIBLE_LAYERS 境界線ボックス(表示されているレイヤー:CS5~)
     CROP_CONTENT_ALL_LAYERS 境界線ボックス(全てのレイヤー:CS5~)
     CROP_MEDIA メディア
     CROP_PDF トリミング
     CROP_TRIM トンボ
     */
    app.pdfPlacePreferences.transparentBackground = true;//透明
    app.pdfPlacePreferences.pageNumber=newPage;
    
  //5.再配置
  GO[0].place(newPath);
}catch(e){
    alert("操作が中断されました。\r\n【考えられる原因】\r\n・テキストを選択している\r\n・何も選択していない\r\n・ページ指定の際に数字以外の文字を入力している")
  };

タグ:


広告

  • 最近の投稿

  • 月別の記事

  • 今月の1枚

  • 人気の記事

    お買い物