Acrobat Javascript - 书签页数?
Acrobat Javascript - Bookmark Page Count?
好的,我来这里是为了让自己熟悉 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);
此外,对于该代码的最后两行,是否有更好的方法来引用特定的书签?也许是名字?
我通过使用当前书签的 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,但当您的文档包含大量书签时它会很有帮助。
好的,我来这里是为了让自己熟悉 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);
此外,对于该代码的最后两行,是否有更好的方法来引用特定的书签?也许是名字?
我通过使用当前书签的 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,但当您的文档包含大量书签时它会很有帮助。