よろよろ帳

InDesign JavaScript 勉強中

タイル印刷

B3ぐらいの大きさの下半分(右半分)だけA3で出力したい時に。全部出したい時はタイル用のプリセットで印刷しています。上半分(左半分)はタイルのチェックを外すだけでOKなのですが、2枚目はルーラー変更してタイル手動にするとか煩雑で結局プリセットで両方出すもったいないことをしていました。印刷前にファイルが保存されているか確認させてプリントダイアログボックスを開きます。プリント後は保存せず閉じるか復帰。
tiledPrinting

var Doc=app.activeDocument;
if(Doc.saved===false||Doc.modified===true) //保存確認
alert("please save a document");
var W= Doc.documentPreferences.pageWidth;
var H= Doc.documentPreferences.pageHeight;
var Pp = Doc.printPreferences;
Pp.paperSize="A3";
Pp.allPrinterMarks=true;
Pp.colorBars=false;
Pp.useDocumentBleedToPrint=false;//ドキュメントの裁ち落とし設定を使用(しない)
Pp.includeSlugToPrint=true;//印刷可能領域(含む)
if(W<=H){
    Doc.zeroPoint=[(420-W)/-2,H/2-(297-H/2)+15]; Pp.printPageOrientation=PrintPageOrientation.LANDSCAPE//+15はざっくりとんぼ分
    }else{Doc.zeroPoint=[W/2-(297-W/2)+15,(420-H)/-2]; Pp.printPageOrientation=PrintPageOrientation.PORTRAIT}

Pp.tile = true; // タイルON
Pp.tilingType =TilingTypes.MANUAL
app.menuActions.item("プリント...").invoke();

Photoshop検版

配列2つの共通のものだけ抜き出したい……indexOfポリフィル試すもやりたいことは2つのフォルダ内の同名ファイルを開きたいだったので、パス名変更でよかったのでした。修正PDFと同名の元PDFをPhotoshopで開いてデジタル検版のアクションかけてPDFで保存します。

#target "photoshop"
var Fol= Folder.selectDialog("修正PDFが入ったフォルダを選択");
//if(!Fol)exit();//キャンセルで終了(exit()はindesignのみ)
var D=Fol.getFiles(/.*\.pdf$/);

var Fol2= Folder.selectDialog("元PDFが入ったフォルダを選択");
//if(!Fol2)exit();//キャンセルで終了
//var D2=Fol2.getFiles(/.*\.pdf$/);

var SF= Folder.selectDialog("保存フォルダを選択");

for(var i=0; i<D.length; i++){
    var Op= new PDFOpenOptions();
    Op.mode= OpenDocumentMode.RGB;
    Op.cropPage=CropToType.MEDIABOX;
    Op.resolution=100;
    app.open(File(D[i]),Op)
    app.open(File(Fol2+"/"+D[i].name),Op)
    doAction("セット名","アクション名")
    activeDocument.flatten();//画像を統合
    var Opt= new PDFSaveOptions(); 
    Opt.presetFile="プリセット名";//photoshopでプリセット作っておく
    Opt.preserveEditing=false;
    app.activeDocument.saveAs(SF,Opt,false,Extension.LOWERCASE);
    activeDocument.close();
    }
alert ("Done!")

テキスト変数

↓参考
Text Variables and Scripts - Adobe Support Community - 1137980
メニューからカスタムテキストの入力めんどくさいな…と思って調べました。

var Doc=app.activeDocument;
Doc.textVariables.item ('M').variableOptions.contents = "3";
Doc.textVariables.item ('D').variableOptions.contents = "25";

テキストからファイル複製

台紙をたくさん複製したい時などに。ファイル名(拡張子付き)を改行で区切ったテキストを用意して実行。同階層に行数分複製します。テキストからフォルダ作成複数フォルダにファイルコピーの合わせ技です。

var myT=File.openDialog("テキストファイルを選択");
if(!myT) exit();
myT.open("r");
var myD=[];
for(;!myT.eof;)myD.push(myT.readln());
var myC=File.openDialog("複製元を選択");
if(!myC)exit();
for(var i=0; i<myD.length; i++){
    var myF=myT.parent+"/"+myD[i];
    myC.copy(myF);
    }
alert ("Done!");

パッケージ

フォルダ内のインデザインファイルをパッケージします。
【InDesign javascript】 指定フォルダ内にあるinddファイルをPDF書き出しやPS保存またはパッケージをするスクリプト: いろいろなメモ
↑こちらをありがたく使わせてもらってましたが
パッケージは選択フォルダ直下のファイルでいいので短く書いてみました。
InDesign ExtendScript API (16.0)
packageForPrintのオプション6個あります。

var Fol= Folder.selectDialog("フォルダを選択");
if(!Fol)exit();//キャンセルで終了
var D=Fol.getFiles(/.*\.indd$/);
for(var i=0; i<D.length; i++){
    app.open(File(D[i]));
    var Doc=app.activeDocument;
    var pFol= new Folder(Doc.filePath+"/"+Doc.name.replace(/\.indd$/,""));
    Doc.packageForPrint(pFol,true,true,false,true,true,true,false/*,true,true,"プリセット名"*/);
//保存フォルダ,フォント,リンク,カラープロファイル,更新,含非表示,エラー無視,出力仕様書,/*オプション:idml,pdf,pdfプリセット*/
    Doc.close(SaveOptions.no);
    }

https://www.drscripto.com/indesign-how-many-links-really-need-to-be-collected/
↑パッケージ後に追加配置したらこちらが便利。リンクフォルダにない分をコピーして更新してくれます。入稿前チェックにもいいです。AppleScriptです。