InDesignのスクリプティング メモ
ネタが無いので、昔のブログから掘り出してきた記事。
DBから出力されたCSVデータを読み込んで、データ結合(自動組版)、ツメ付け、ノンブル振り、PDF書き出しなど。(参考:InDesignの勉強部屋)
Javascript内で「データ結合」機能を実行
1 2 3 4 5 |
var doc = app.activeDocument; var Filename = File.openDialog("ソースファイルを選択"); var dmg = doc.dataMergeProperties; dmg.selectDataSource(Filename); dmg.mergeRecords(); |
ツメの貼り付け
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
doc = app.activeDocument; var Filename = File.openDialog("ツメ画像を選択してください"); if(Filename){ for(i=0;i < app.activeDocument.pages.length;i++){ imgFrame = doc.pages[i].textFrames.add(); if(i % 2 == 0){ imgFrame. visibleBounds = ["-3mm", "-3mm", "300mm", "10mm"]; }else{ imgFrame. visibleBounds = ["-3mm", "200mm", "300mm", "213mm"]; } imgFrame.contentType = ContentType.graphicType; imgFrame.place(Filename); } } |
ノンブルを振る
1 2 3 4 5 6 7 8 9 10 11 12 |
var doc = app.activeDocument; var start_nombre = prompt("ノンブルの開始番号を入力",""); if(start_nombre != null){ if(start_nombre =="") start_nombre = "1"; for(i=0;i < app.activeDocument.pages.length;i++){ nombreFrame = doc.pages[i].textFrames.add(); nombreFrame . visibleBounds = ["285mm", "95mm", "290mm", "115mm"]; nombre = parseInt(start_nombre) + i; nombreFrame.contents = String(nombre); nombreFrame.paragraphs[0].justification = Justification.centerAlign; } } |
PDF書き出し
1 2 3 4 5 6 7 8 9 10 |
PDFpre = "PDFX1" //PDF書き出しプリセットの指定 var filename = File.saveDialog("保存先フォルダを選択してください",".pdf"); if (filename) { if(PDFpre){ app.activeDocument.exportFile(ExportFormat.pdfType, filename, false,PDFpre); }else{ app.activeDocument.exportFile(ExportFormat.pdfType, filename, false); } } |
オーバーフロー修正
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var docObj = app.activeDocument; for (var i=0; i<docObj.pages.length; i++) //ページループ { var tfObj = docObj.pages[i].textFrames; //ページ内テキストフレーム for (var j=0; j<tfObj.length; j++){ while(tfObj[j].overflows == true){ try{ --tfObj[j].parentStory.horizontalScale ; }catch(e){ alert(e); $.writeln(tfObj[j].texts[0]); exit(); } } } } |