好的,所以我在这里试图让自己熟悉Adobe 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);
此外,对于该代码的最后两行,是否有更好的方法来引用特定的书签?通过名字,也许?
答案 0 :(得分: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(...)
。
不幸的是,这是引用书签的唯一方法。如果您想通过它的名称查找书签,则可以将所有书签名称存储在具有子索引的对象中。这是一个黑客攻击,但当你有一个包含大量书签的文档时它会很有帮助。