【问题标题】:Acrobat Javascript - Bookmark Page Count?Acrobat Javascript - 书签页数?
【发布时间】:2015-06-21 07:16:00
【问题描述】:

好的,所以我在这里尝试让自己熟悉 Adob​​e Acrobat 的 Javascript API —— 我觉得我可能遗漏了一些做某些事情的简单方法,但让我们一起找出答案。

问题: 我将如何查找属于书签的页面数量?

例如,我有以下书签布局:

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);

另外,对于该代码的最后两行,是否有更好的方法来引用特定书签?按名字,也许?

【问题讨论】:

    标签: javascript acrobat bookmarks


    【解决方案1】:

    我通过使用当前书签的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(...)

    很遗憾,这是引用书签的唯一方法。如果您想按名称查找书签,可以将所有书签名称及其子索引存储在一个对象中。这是一个 hack,但当您拥有包含大量书签的文档时,它会很有帮助。

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多