如何在 Adobe Acrobat 中使用 JS 脚本创建书签?

问题描述 投票:0回答:1

我有一个巨大的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 search indexing acrobat acrobat-sdk
1个回答
0
投票

我假设您现在已经弄清楚了这一点,但对于其他人来说。您编写的 JavaScript 对于 Adobe Acrobat 来说可能太现代了。我刚刚使用 2024 版本的 Adobe Acrobat Pro 尝试过此操作,但您的代码中仍然存在四个语法错误。

当我用“var”更改“let”的所有实例时,它最终接受了代码,并修复了您所做的新书签的推送。

你所在的地方:

bookmarks.push({ level: titleLevel, bookmark });

更改为:

bookmarks.push({ level: titleLevel, bookmark: bookmark });

我无法保证其余代码能够正常工作,因为我没有您的测试文档,但至少 Adobe Acrobat 中的 JavaScript 解释器不再出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.