2015-06-21 35 views
2

好了,所以我在這裏努力地讓自己熟悉的Adobe Acrobat的JavaScript API - 我覺得我可能會丟失做某些事的一些簡單的方法,但讓我們發現了一起。Acrobat Javascript - 書籤頁數?

問題: 我該如何去尋找屬於書籤的頁面數量?

例如,我有以下的書籤佈局:

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

我已經通過使用當前書籤的​​目的地相對於下一個書籤的​​目的地完成了此操作。因此,假如書籤按照文檔的流程,只需運行在一個書籤​​,並使用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(...)代替您的應用程序。

不幸的是,這是引用書籤的唯一途徑。如果您想通過名稱找到書籤,則可以將所有書籤名稱與其子索引一起存儲在對象中。這是一種黑客行爲,但是當你擁有一個包含大量書籤的文檔時,它會很有幫助。