xlogI125’s blog

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

Acrobat JavaScript練習 テキストボックス注釈で各ページにページ番号を記入

メモ

  • テキストボックス注釈で各ページにページ番号を記入するAcrobat JavaScript
    • テキストボックス注釈の位置や書式など細かいことは気にしない
  • ページ番号の記入方法として「ヘッダーとフッターを追加」では都合が悪い場合の使用を想定

使い捨てスクリプト

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

(() => {

const src = "(" + 
(() => {
  const doc = this;
  var pageRotation, str, strWmm, strHmm, annot;

  var cResponse = app.response({
    cQuestion: 
      "・各ページに 資料名 と ページ番号 をテキストボックス注釈で記入します。\r" + 
      "・あらかじめ注釈の「テキストのプロパティ」で書式を設定しておいてください。", 
    cTitle: "Acrobat JavaScript: " + doc.documentFileName, 
    cDefault: "○△□完成図書 3/10", 
    bPassword: false, 
    cLabel: "資料名"
  });

  if (cResponse == null) {
    return;
  }

  [...Array(doc.numPages)].forEach(($null, pageNum) => {
    pageRotation = doc.getPageRotation({nPage: pageNum});

    str = "『" + cResponse + "』 ページ " + 
          (pageNum + 1) + " / " + numPages;

    /* 注釈の「テキストのプロパティ」で設定した書式に合わせて修正する */
    strWmm = 25.4/72 * 8 * [...str].length; /* フォント8pt */
    strHmm = 25.4/72 * 8 * 1.5; /* フォント8pt */

    if (pageRotation == 90 || pageRotation == 270) {
      [strWmm, strHmm] = [strHmm, strWmm];
    }

    annot = doc.addAnnot({
      type: "FreeText", 
      page: pageNum, 
      rect: [0+2, 0+2, strWmm+2, strHmm+2].map(x => 72/25.4 * x), 
      rotate: pageRotation, 
      contents: str
    });
  });
}).toString().replace(/\r\n/g, "") + ")();";

app.addMenuItem({
  cName: 'MyEdit', 
  cUser: '資料名とページ番号を記入', 
  cParent: 'Edit', 
  nPos: 0, 
  cExec: src, 
  cEnable: 'event.rc = (event.target != null);', 
  cMarked: 'event.rc = false;', 
  bPrepend: false
});

})();