You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript将PDF子书签提升至与父书签同层级?

批量扁平化PDF书签层级(PDF X-Change Editor JS实现)

需求说明

我是一名有基础编程知识的普通上班族,想简化工作流程,需要删除PDF的所有书签层级,把所有子书签调整到和父书签同一层级。目前用PDF X-Change Editor的JavaScript控制台操作,现有代码只能检测子书签存在与否,需要实现扁平化功能。

现有检测代码

// Get the root bookmark node of the document
var rootBookmark = this.bookmarkRoot;
 
// Check if the root bookmark node exists
if (rootBookmark) {
    // Iterate through each child bookmark
    for (var i = 0; i < rootBookmark.children.length; i++) {
        var bookmark = rootBookmark.children[i];
        // Perform operations on each bookmark, such as accessing its name or properties
        console.println("Bookmark Name: " + bookmark.name);
 
        // Check every children
        if (rootBookmark.children[i].children){
             console.println("Si entro");
        }else{
            console.println("no");
        }
    }
} else {
    console.println("No bookmarks found in the document.");
}

实现扁平化的代码方案

// 获取文档根书签节点
var rootBookmark = this.bookmarkRoot;

if (rootBookmark) {
    // 存储所有需要移到根层级的书签
    var allBookmarks = [];

    // 递归遍历所有书签,收集非根节点的书签
    function collectBookmarks(bookmarkNode) {
        // 如果当前节点有子节点,优先遍历子节点
        if (bookmarkNode.children && bookmarkNode.children.length > 0) {
            for (var i = 0; i < bookmarkNode.children.length; i++) {
                collectBookmarks(bookmarkNode.children[i]);
            }
        }
        // 根节点不加入收集列表,其余书签全部加入
        if (bookmarkNode !== rootBookmark) {
            allBookmarks.push(bookmarkNode);
        }
    }

    // 从根节点开始遍历收集所有书签
    collectBookmarks(rootBookmark);

    // 清空根节点原有子节点,避免残留层级
    rootBookmark.children = [];

    // 将所有收集到的书签添加到根节点下,实现同一层级
    for (var j = 0; j < allBookmarks.length; j++) {
        rootBookmark.addChild(allBookmarks[j]);
    }

    console.println("书签层级已扁平化完成,共处理 " + allBookmarks.length + " 个书签");
} else {
    console.println("文档中未找到任何书签");
}

使用说明

  • 操作前请备份原PDF文件,避免误操作导致数据丢失
  • 打开PDF X-Change Editor,按Ctrl+J调出JavaScript控制台
  • 将上述代码粘贴到控制台,按回车执行即可

内容的提问来源于stack exchange,提问作者user20335602

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:30:24