コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

027.【Acrobat】注釈のあるページだけ抽出

※バッチシーケンスに組み込んで使う用

書いたコード

var flag = false;
var annots = this.getAnnots()
var annotsPagesTmp = [];
for (var i = 0; i < annots.length; i++) {
  annotsPagesTmp.push(annots[i].page)
}
var annotsPages = removeArrayDuplicates(annotsPagesTmp)

annotsPages.sort(compareNumbers);

var pageLen = this.numPages;
var annotsPagesLen = annotsPages.length;

loop1:
for (var i = pageLen-1; i >= 0; i--) {
  flag = false;
  for (var j = 0;j<annotsPagesLen;j++){
    if (i===annotsPages[j]){      
      flag = true;
      continue loop1;
      }
    }
    if (!flag){
            this.deletePages({nStart: i});
    }
  }

function compareNumbers(a, b) {
  return a - b;
}

function removeArrayDuplicates(array) {
  var exist = {},
    result = [];
  for (var i = 0, l = array.length; i < l; i++) {
    var tmp = array[i];
    if (!exist[tmp]) {
      exist[tmp] = true;
      result.push(tmp);
    }
  }
  return result;
}

メモ

AcrobatのJS、ESTKから動かしてデータブラウザを見るということができないので、テストする→止まる→止まったあたりの記述を凝視するという非常に非効率な書き方をしている。
なんかもうちょっとうまいことやりたい。効率の良いデバッグのやり方を調べる。

参考