もう少し前の話になりますが、InDesignで作成されたカタログの印刷依頼があり、そのInDesign書類というのが自動組版で作成されたのか、人海戦術で作成されたのか1ファイルに1ページで作成されており、なんと1万ファイルほどにも達します。
これを印刷できるよう面付け作業をおこなうために、ブック機能を利用して1ファイルにしてから書き出すか、ちまちま1ページごとにPDFを書き出すかが必要となりました。
まず1万ページという超大量のファイルを相手に作業するということで、できるだけ人手をかけずに処理をするためにこちらも自動化で対応することとなりました。
実はそれ以外の方法では時間がかかりすぎて実現性が乏しいというのが実際なのですが・・・
さてそれでは本題ですが、今回はフォルダに入ったInDesign書類を自動で開いてPDF書き出しまでを考えてみました。
- InDesign書類の入ったフォルダを選択する
- PDFを書き出すフォルダを選択する
- 保存するファイル名を決める
- ファイルを一つずつ開く
- PDF書き出しを行う
- ファイルを閉じる
- ファイルの数だけ3から繰り返す
はい、これを実行するのが以下のスクリプトです。
InDesignではAppleScript・VBScript・Javascriptが利用できますが、今回はJavascriptをチョイスしました。
テキストエディタを開き以下のスクリプトをコピーし、適当に名前を決め拡張子にjsxをつけutf8フォーマットで保存します。
例)InDesign2PDF.jsx
1 2 3 4 5 6 7 8 9 10 11 12 |
folderObj = Folder.selectDialog("ファイルの入ったフォルダを選択してください"); saveFolder = Folder.selectDialog("保存するフォルダを選択してください"); fileList = folderObj.getFiles("*.indd"); for (i=0; i<fileList.length; i++) { fileObj = new File(fileList[i].fsName); fileName = (fileObj.displayName.split("."))[0]+".pdf" saveObj = new File(saveFolder.fsName+"/"+fileName) app.open(File(fileObj)); app.activeDocument.exportFile(ExportFormat.pdfType, saveObj, false, "[プレス品質]"); app.activeDocument.close(SaveOptions.no); } |
できたファイルはInDesignフォルダの中にあるScriptフォルダのScript Panel内に入れれば使えるようになります。
では簡単に説明していきます。
1 2 |
folderObj = Folder.selectDialog("ファイルの入ったフォルダを選択してください"); saveFolder = Folder.selectDialog("保存するフォルダを選択してください"); |
Folder.selectDialog(“ダイアログに表示する文章”)で、フォルダを選択するダイアログが出てくる。
選択した結果を変数folderObjおよびsaveFolderに代入しています。
3 |
fileList = folderObj.getFiles("*.indd"); |
フォルダの中のファイルを取り出してfileListに代入します。
その際InDesignファイルだけを抜き出すために、拡張子.inddをフィルタしています。
4 |
for (i=0; i<fileList.length; i++) |
ファイルの数だけ作業を繰り返します。
fileList.lengthでファイルの数がわかります。
6 |
fileObj = new File(fileList[i].fsName); |
ファイルを一つずつ拾い出してfileObjに代入しています。
7 8 |
fileName = (fileObj.displayName.split("."))[0]+".pdf" saveObj = new File(saveFolder.fsName+"/"+fileName) |
ちょっとここはややこしいのですが、保存する名前を決めています。
保存名は元のInDesignファイル名のままとし、拡張子だけpdfとします。
fileObj.displayNameでInDesignファイルの名前を得ます。
得た名前から拡張子をはずすためピリオドで名前を分割し、ピリオドの前の部分のみ拾い出します。
.split(“.”)で分割し、[0]で先頭部分を拾い出しています。
saveObj = new File(saveFolder.fsName+”¥¥”+saveName)で最後にPDFの拡張子を繋げて保存ファイルを決めます。
ここで注意!Windowsで利用する場合は、”/”の部分を”¥”に変更が必要です。
9 |
app.open(File(fileObj)); |
ここでファイルを開きます
10 |
app.activeDocument.exportFile(ExportFormat.pdfType, saveObj, false, "[プレス品質]"); |
これがPDFを書き出す命令です。
[プレス品質]の部分は、ご自身の環境や必要なPDF形式に合わせて変更してください。
- ExportFormat.pdfType 書出しフォーマットをPDFに設定
その他にもepsType・inCopy・jpg・rtfなど書出せるタイプすべてが用意されている - saveObjが書出す場所と、ファイル名を指定。
- false 書出し設定のダイアログを開くかの設定をおこなう。
falseだと、ダイアログは開かない。trueにすると保存のたびに、保存形式などを尋ねてくる。 - “[プレス品質]” InDesignのPDF書出しプリセットのプリセット名を入れる。
11 |
app.activeDocument.close(SaveOptions.no); |
ファイルを閉じる命令ですが、オプションとして、現在は保存をせずに閉じる設定です。SaveOptions.yesとすれば、保存して閉じる事になります。