DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

InDesignドキュメントにPDFをまとめて配置

仕事の合間にいろいろやりながら、来月の登壇資料とか作っている毎日です。仕事が割と繁忙期なのでまあ体力続かなくて辛いですね…。
さて、今日はAdobe謹製のスクリプトに手を加えちゃおうという内容です。

最初から入ってるやで

ネットで調べるとけっこうヒットする標題のスクリプトですが、実はInDesignのプリインストールスクリプトにあります。

f:id:uske_S:20200117095606p:plain
画像はCC2017、JavaScriptのほう

ただこのままだと若干使いにくい。それはPDFがメディアサイズで貼られるところです。

どうする?

個人的にはメディアサイズではなく、トリムサイズで貼りたいってケースのほうが多い気がする。
なので貼り付けるPDFのクロップサイズを調整しちゃいましょう。

コード

もとのコード

122行あるので、実際に開いて確認されたし。
最後のmyPlacePDF関数だけ取り出します。

function myPlacePDF(myDocument, myPage, myPDFFile){
    var myPDFPage;
    app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia;
    var myCounter = 1;
    var myBreak = false;
    while(myBreak == false){
        if(myCounter > 1){
            myPage = myDocument.pages.add(LocationOptions.after, myPage);
        }
        app.pdfPlacePreferences.pageNumber = myCounter;
        myPDFPage = myPage.place(File(myPDFFile), [0,0])[0];
        if(myCounter == 1){
            var myFirstPage = myPDFPage.pdfAttributes.pageNumber;
        }
        else{
            if(myPDFPage.pdfAttributes.pageNumber == myFirstPage){
                myPage.remove();
                myBreak = true;
            }
        }
        myCounter = myCounter + 1;
    }
}

全体の102行目、この関数だと下記の部分がクロップサイズの指示になります。

app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia;

どう書き換えるか

このPDFCrop.cropMediaを任意のものに変更します。対応するのは下記のとおりです。

プロパティ 対応クロップサイズ
PDFCrop.CROP_ART アート
PDFCrop.CROP_BLEED 裁ち落とし
PDFCrop.CROP_CONTENT_ALL_LAYERS 境界線ボックス(すべてのレイヤー)
PDFCrop.CROP_CONTENT_VISIBLE_LAYERS 境界線ボックス(表示中のレイヤーのみ)
PDFCrop.CROP_MEDIA メディア
PDFCrop.CROP_PDF トリミング
PDFCrop.CROP_TRIM トンボ

既存の書き方と表の書き方が違いますが、ここでは気にしないでください…*1

で、今回僕はトリムサイズでPDFを貼りたかったので、下記のように書き換えました。

app.pdfPlacePreferences.pdfCrop = PDFCrop.CROP_TRIM;

余力があればScriptUIなどでクロップサイズを選べるようにしてもいいかもしれませんね!
やってみたいな〜って方は今度のもくもく会とかTwitterで聞いてもらえればと思います。

*1:Enumerator型のオブジェクトなので、実際には 1131573325 といった値が参照されています(えっ)。話が大きく脱線するので詳細は割愛します