我有一个巨大的PDF(2000多页,这里是文档示例)丢失了标签和书签。我无法联系原始来源。
我想做的是在 Adobe Acrobat 上运行 JS 脚本,该脚本生成书签以允许更轻松地导航通过文档。
这是我迄今为止尝试过的:
// Function to create bookmarks for titles and subtitles
function createBookmarks() {
const numPages = this.numPages;
const bookmarks = [];
let currentTitleBookmark = null;
for (let pageNum = 0; pageNum < numPages; pageNum++) {
const pageText = this.getPageNumWords(pageNum);
let titleMatch, subtitleMatch;
for (let i = 0; i < pageText.length; i++) {
const word = pageText[i];
const text = word.text;
// Check if the text matches the title pattern (e.g., "1 Title")
titleMatch = text.match(/^(\d+)\s(.+)$/);
if (titleMatch) {
const titleLevel = titleMatch[1];
const titleName = titleMatch[2];
const bookmark = this.bookmarkRoot.createChild(titleName);
bookmarks.push({ level: titleLevel, bookmark });
currentTitleBookmark = bookmark;
}
// Check if the text matches the subtitle pattern (e.g., "1.1 Subtitle")
subtitleMatch = text.match(/^(\d+\.\d+)\s(.+)$/);
if (subtitleMatch && currentTitleBookmark) {
const subtitleName = subtitleMatch[2];
const subtitleBookmark = currentTitleBookmark.createChild(subtitleName);
bookmarks.push({ level: subtitleMatch[1], bookmark: subtitleBookmark });
}
}
}
// Set the initial bookmark to open
if (bookmarks.length > 0) {
bookmarks[0].bookmark.dest = pageNum;
}
}
// Call the function to create bookmarks
createBookmarks();
当我在控制台中按
Ctrl + Enter
时与最后一行代码一致会出现错误:
ReferenceError: createBookmarks is not defined
1:Console:Exec
undefined
我错过了什么?
我假设您现在已经弄清楚了这一点,但对于其他人来说。您编写的 JavaScript 对于 Adobe Acrobat 来说可能太现代了。我刚刚使用 2024 版本的 Adobe Acrobat Pro 尝试过此操作,但您的代码中仍然存在四个语法错误。
当我用“var”更改“let”的所有实例时,它最终接受了代码,并修复了您所做的新书签的推送。
你所在的地方:
bookmarks.push({ level: titleLevel, bookmark });
更改为:
bookmarks.push({ level: titleLevel, bookmark: bookmark });
我无法保证其余代码能够正常工作,因为我没有您的测试文档,但至少 Adobe Acrobat 中的 JavaScript 解释器不再出现问题。