:note

プリントプリセットで設定を上書きしてプリント(失敗)

InDesignのプリントプリセット (Printer Preset) でできないことのひとつに印刷範囲指定があります。

プリントは全ページ出力になってしまう(範囲指定できない)、これはブックからの出力でも同様。

フォルダ内にある巨大なデータの出力時にエラーになってしまうドキュメントをページ分割出力できないかと、ドキュメントのプリント設定 (Print Preference) に Prenter Preset を上書きしてみました。

分割出力に関しては、pageRangeを切り刻んで指定できたのだけど、設定の上書きができない項目があって Printer Preset の内容がすべて反映されてプリントできない。

とりあえず色分解をコントロール出来ないところで止まってる。

/**
 * print per n using preset (emulated) 
 */
var pp_name = "rino1";
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// exist? printer preset
try  {
  var printer_preset = app.printerPresets.item(pp_name);
  printer_preset.name;
  // $.writeln(printer_preset.properties.toSource().replace(/, /g,",\r"));
}
catch(e){
  e_mess("PrinterPreset "+"\""+ pp_name +"\""+" does not exist");
}

// select folder
var folder_obj = Folder.selectDialog("Select the folder included .indd documents");
if(!folder_obj) {
  e_mess("Canceled by user");
}
// exist? indd
var file_list = folder_obj.getFiles("*.indd");
if (file_list.length == 0) {
  e_mess(".indd document does not exist");
};

for (var fi=0, fiL=file_list.length; fi < fiL ; fi++) {
  var doc = app.open(file_list[fi]);
  var print_pref = doc.printPreferences;

  // try override properties
  for (var i in printer_preset.properties) {
    try  {
      print_pref[i] = printer_preset[i]
      // $.writeln("+ok= "+i+": "+print_pref[i]);
    }
    catch(e){
      // $.writeln("-NG= "+i+": "+e);
    }
  };

  // override the preset
  // $.writeln("=======================================");
  // $.writeln(print_pref.properties.toSource().replace(/, /g,",\r"));

  var page_range_arr = [];

  var print_per = 4;
  var page_leng = doc.pages.length;
  sep = Math.floor(page_leng / print_per);
  am = page_leng % print_per;

  // split page range
  for (var i=0; i < sep; i++) {
    var st = (print_per * i + 1);
    var en = (print_per * (i+1) );
    var ran = "+"+st+"-+"+en;
    page_range_arr.push(ran)
  };
  if (am !== 0) {
    page_range_arr.push("+"+(sep * print_per + 1)+"-+"+(page_leng));
  };

  for (var pri=0, priL=page_range_arr.length; pri < priL ; pri++) {
    // try override preset
    with (print_pref){
      pageRange = page_range_arr[pri]; // PageRange.ALL_PAGES;

      /**
       * error 
       */
      // printCyan = false;
      // printMagenta = false;
      // printYellow = false;
      // printBlack = true;
    }

    doc.print(true);// use print preference instead of preset
    // doc.print(true, printer_preset); //use preset
  };
  doc.close(SaveOptions.NO);
};

function e_mess (mess) {
  alert(mess);
  app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
  exit();
}

32行目の // try override properties のあたり ドキュメントを開いてプリセットの内容を無理やり上書きを試みる時点でエラーになるのがある。(-NGになっているところ) ↓

-NG= name: エラー: オブジェクトはプロパティまたはメソッド 'name' をサポートしていません
-NG= printerList: エラー: 'printerList' のプロパティは読み取り専用です。
-NG= ppdList: エラー: 'ppdList' のプロパティは読み取り専用です。
-NG= paperSizeList: エラー: 'paperSizeList' のプロパティは読み取り専用です。
-NG= screeningList: エラー: 'screeningList' のプロパティは読み取り専用です。
+ok= printer: 310 -01
-NG= ppd: エラー: プロパティの値がロックされています。変更できません。
-NG= printFile: IOError: フォルダ " " が見つかりません。
+ok= copies: 1
+ok= reverseOrder: false
+ok= printSpreads: true
+ok= printMasterPages: false
+ok= printNonprinting: false
+ok= paperSize: A4
+ok= printPageOrientation: 1751738216
+ok= pagePosition: 1668183106
+ok= scaleMode: 1935898745
+ok= scaleWidth: 100
+ok= scaleHeight: 100
+ok= scaleProportional: true
+ok= tile: false
+ok= allPrinterMarks: false
+ok= cropMarks: false
+ok= bleedMarks: false
+ok= registrationMarks: false
+ok= colorBars: false
+ok= pageInformationMarks: false
+ok= markType: 1785558883
+ok= markLineWeight: 825257325
+ok= useDocumentBleedToPrint: true
-NG= bleedTop: エラー: プロパティの値がロックされています。変更できません。
-NG= bleedBottom: エラー: プロパティの値がロックされています。変更できません。
-NG= bleedInside: エラー: プロパティの値がロックされています。変更できません。
-NG= bleedOutside: エラー: プロパティの値がロックされています。変更できません。
+ok= includeSlugToPrint: false
+ok= colorOutput: 1936027745
+ok= trapping: 1330005536
+ok= flip: 1852796517
+ok= negative: false
+ok= screening: 141 lpi / 600 dpi
-NG= printCyan: エラー: 現在の状態でこのプロパティを適用できません。
-NG= cyanAngle: エラー: 現在の状態でこのプロパティを適用できません。
-NG= cyanFrequency: エラー: 現在の状態でこのプロパティを適用できません。
-NG= printMagenta: エラー: 現在の状態でこのプロパティを適用できません。
-NG= magentaAngle: エラー: 現在の状態でこのプロパティを適用できません。
-NG= magentaFrequency: エラー: 現在の状態でこのプロパティを適用できません。
-NG= printYellow: エラー: 現在の状態でこのプロパティを適用できません。
-NG= yellowAngle: エラー: 現在の状態でこのプロパティを適用できません。
-NG= yellowFrequency: エラー: 現在の状態でこのプロパティを適用できません。
-NG= printBlack: エラー: 現在の状態でこのプロパティを適用できません。
-NG= blackAngle: エラー: 現在の状態でこのプロパティを適用できません。
-NG= blackFrequency: エラー: 現在の状態でこのプロパティを適用できません。
+ok= sendImageData: 1869640563
+ok= fontDownloading: 1768842098
+ok= downloadPPDFonts: true
+ok= postscriptLevel: 1347636275
-NG= dataFormat: エラー: プロパティの値がロックされています。変更できません。
-NG= sourceSpace: エラー: プロパティの値がロックされています。変更できません。
+ok= profile: 1967419235
+ok= opiImageReplacement: false
+ok= omitEPS: false
+ok= omitPDF: false
+ok= omitBitmaps: false
+ok= flattenerPresetName: [中解像度]
+ok= ignoreSpreadOverrides: false
+ok= bleedChain: false
+ok= printLayers: 1987080780
-NG= parent: エラー: 'parent' のプロパティは読み取り専用です。
-NG= index: エラー: オブジェクトはプロパティまたはメソッド 'index' をサポートしていません

今回、プリセットではCMYプリントを無効にしているのに、「エラー: 現在の状態でこのプロパティを適用できません。」とできない。じゃあ、どの状態ならできるのだろう?

ESTKのDOMヘルプをみると

PrintPreference.printCyan  

Data Type: Boolean

Adobe InDesign CS4 (6.0) Object Model Object Model Object Model

If true, prints the cyan ink. Note: Valid only when trapping is off.

trapping があやしい。

でも、ちゃんと

trapping = 1330005536 (なし)になっている。InDesign側でのトラップ(trapping = Trapping.APPLICATION_BUILTIN)にしても当然だめ。

Printer PresetとPrint Preferenceの差分をみてみてもヒントになるようなものもなく…

- がPrinter Preset

+ がPrint Preference

--- untitled
+++ (clipboard)
@@ -1,7 +1,4 @@
-true 
-----結果----
-({name:"rino1",
-printerList:["1257",
+({printerList:["1257",
 "Adobe PDF 8.0",
 "Adobe PDF 9.0",
 "2270",
@@ -1406,18 +1403,6 @@
 flip:1852796517,
 negative:false,
 screening:"141 lpi / 600 dpi",
-printCyan:false,
-cyanAngle:75,
-cyanFrequency:70,
-printMagenta:false,
-magentaAngle:15,
-magentaFrequency:70,
-printYellow:false,
-yellowAngle:0,
-yellowFrequency:70,
-printBlack:true,
-blackAngle:45,
-blackFrequency:141,
 sendImageData:1869640563,
 fontDownloading:1768842098,
 downloadPPDFonts:true,
@@ -1431,8 +1416,10 @@
 omitBitmaps:false,
 flattenerPresetName:"[中解像度]",
 ignoreSpreadOverrides:false,
+pageRange:1886547553,
 bleedChain:false,
+preserveColorNumbers:true,
 printLayers:1987080780,
-parent:resolve("/"),
-index:1})
-=======================================
+activePrinterPreset:1131639917,
+parent:resolve("/document[@name=\"1.indd\"]")})
+----結果----
\ No newline at end of file

はてさて

 
comments powered by Disqus
back to top