2015-06-21 2 views
2

Хорошо, поэтому я пытаюсь познакомиться с API Javascript Adobe Acrobat - я чувствую, что, возможно, мне не хватает некоторых простых способов сделать определенные вещи, но давайте выясним это вместе.Acrobat Javascript - Закладка Count Count?

Вопрос: Как бы я мог найти количество страниц, принадлежащих закладке?

К примеру, у меня есть следующие закладки раскладка:

Intro [3 pages] 
Factions [2 pages] 
Character [3 pages] 
End [1 page] 

(бы отправили картину, но я не имею разрешения сделать так: /)

По сути, я хотел бы чтобы иметь возможность автоматизировать извлечение количества страниц, которые есть в каждой закладке, для небольшого проекта, над которым я работаю, чтобы ускорить работу на работе.

Мой код до сих пор:

/* Count Bookmark Children 
    TODO: Count Pages of each Bookmark */ 

function CountBm(bm) { 
    var count = 0; 

    console.println("Bookmark name: " + bm.name); 
    bm.execute(); // goto bm -- not necessary, just for personal reasons 

    console.println("Bookmark Start Page: " + (this.pageNum+1)); 

    /* This would only work if each page in the bookmark was a child 
     of the bookmark being checked */ 
    if (bm.children != null) { 
     for (var i = 0; i < bm.children.length; i++) 
      count++; 
    } 
    console.println("Pages in Bookmark: " + count); 
} 

var bkmk = bookmarkRoot.children[2]; // Character Bookmark 
CountBm(bkmk); 

Кроме того, в течение последних двух строк этого кода, есть лучший способ ссылаться на конкретные закладки? По имени, может быть?

ответ

0

Я сделал это, используя текущую закладку execute() адресата относительно назначения следующей закладки execute(). Поэтому, предполагая, что закладки следуют потоку документа, просто запустите execute() на следующей закладке и используйте this.pageNum, чтобы выяснить, сколько страниц вы переместили вперед.

Что-то вроде:

this.pageNum = 0; 

for (var i = 1; i < this.bookmarkRoot.children.length; i++) { 
    page = this.pageNum; 
    this.bookmarkRoot.children[i].execute(); 
    console.println("This bookmark is " + (this.pageNum-page) + " pages long"); 
} 

Вы можете добавить обработку для внуков закладки, а также, в зависимости от вашего приложения. Правильное решение зависит от структуры ваших закладок. Вышеприведенная версия для печати на консольной линии может быть заменена на this.extractPages(...) для вашего приложения.

К сожалению, это единственный способ ссылки на закладки. Если вы хотите найти закладку по ее имени, вы можете сохранить все имена закладок в объекте с их дочерними индексами. Это взломать, но это может быть полезно, если у вас есть документ с большим количеством закладок.