xlogI125’s blog

パソコン作業を効率化したい

Acrobat JavaScript練習 ページサイズ一覧をReportに出力

メモ

  • ページサイズの一覧を見たいので、Reportにページ数、回転角度、CropBox、MediaBox、ArtBoxの値を出力する。

使い捨てスクリプト

// Acrobat Standard DC (2022年6月頃), Windows 11
// JavaScript デバッガー の コンソール から実行
// 実行方法はテキストを範囲選択して Ctrl + Enter

app.addMenuItem({
  cName: 'MyWindow0', 
  cUser: 'JavaScript デバッガー を表示', 
  cParent: 'Window', // ウィンドウ(W)
  nPos: 0, 
  cExec: '\
    console.show();\
    console.println("// JavaScript デバッガー の コンソール から実行");\
    console.println("// 実行方法はテキストを範囲選択して Ctrl + Enter");\
  ', 
  cEnable: 'event.rc = true', 
  cMarked: 'event.rc = false', 
  bPrepend: false
});

app.addSubMenu({
  cName: 'MyEdit0', 
  cUser: 'ページサイズ一覧を確認', 
  cParent: 'Edit', // 編集(E)
  nPos: 0
});

app.addMenuItem({
  cName: 'MyEdit0Report', 
  cUser: 'レポートを作成', 
  cParent: 'MyEdit0', 
  nPos: 0, 
  cExec: '\
/* 以下 cExec */\
(()=>{\
  const doc = this;\
  const numPages = doc.numPages;\
\
  const rep = new Report();\
  rep.size = 1.00;\
\
  rep.color = ["RGB", 0/255, 0/255, 0/255];\
\
  rep.writeText(util.printf(\
    "%s%s", "path: ", doc.path));\
  rep.writeText(util.printf(\
    "%s%.3f MB", "filesize: ", doc.filesize/1024/1024));\
  rep.writeText(util.printf(\
    "%s%s", "numPages: ", numPages));\
\
  rep.divide();\
\
  rep.writeText(\
    "Page / PageRotation / CropBox / MediaBox / ArtBox"\
  );\
\
  [...Array(numPages)].forEach(($null, pageNum) => {\
    const rot = doc.getPageRotation({nPage: pageNum});\
    const boxC = doc.getPageBox(\
      {cBox: "Crop", nPage: pageNum}).map(x => 25.4/72 * x);\
    const boxM = doc.getPageBox(\
      {cBox: "Media", nPage: pageNum}).map(x => 25.4/72 * x);\
    const boxA = doc.getPageBox(\
      {cBox: "Art", nPage: pageNum}).map(x => 25.4/72 * x);\
\
    switch (rot) {\
      case 0:\
        rep.color = ["RGB", 0/255, 0/255, 0/255];\
        break;\
      case 90:\
        rep.color = ["RGB", 192/255, 0/255, 0/255];\
        break;\
      case 180:\
        rep.color = ["RGB", 0/255, 128/255, 0/255];\
        break;\
      case 270:\
        rep.color = ["RGB", 0/255, 0/255, 192/255];\
        break;\
      default:\
        rep.color = ["RGB", 0/255, 0/255, 0/255];\
    }\
\
    rep.writeText(util.printf(\
      "%5d\t/%4d\t/" + \
      "%-7.1f,%-7.1f,%-7.1f,%-7.1f\t/" + \
      "%-7.1f,%-7.1f,%-7.1f,%-7.1f\t/" + \
      "%-7.1f,%-7.1f,%-7.1f,%-7.1f", \
      pageNum, rot, \
      boxC[0], boxC[3], boxC[2], boxC[1], \
      boxM[0], boxM[3], boxM[2], boxM[1], \
      boxA[0], boxA[3], boxA[2], boxA[1]\
    ));\
  });\
\
  const docRep = rep.open("レポート.pdf");\
  docRep.layout = "SinglePage";\
  docRep.zoomType = zoomtype.pref;\
})();\
/* 以上 cExec */\
  ', 
  cEnable: 'event.rc = (event.target != null);', 
  cMarked: 'event.rc = false;', 
  bPrepend: false
});

app.addMenuItem({
  cName: 'MyEdit0SetPageBoxesArtTrimBleed', 
  cUser: 'ページボックス(Art, Trim, Bleed)の設定を削除', 
  cParent: 'MyEdit0', 
  nPos: 1, 
  cExec: '\
/* 以下 cExec */\
(() => {\
  this.setPageBoxes({cBox:"Art"});\
  this.setPageBoxes({cBox:"Trim"});\
  this.setPageBoxes({cBox:"Bleed"});\
})();\
/* 以上 cExec */\
  ', 
  cEnable: 'event.rc = (event.target != null);', 
  cMarked: 'event.rc = false;', 
  bPrepend: false
});

JavaScript デバッガー を表示する手順の例

「新規しおり」を作成して「しおりのプロパティ」にて「アクションの追加」で「JavaScriptを実行」を追加。「JavaScriptの作成と編集」に「console.show();」と記述。