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

如何用JavaScript在Adobe Acrobat Pro DC提取非连续页面至单个文档

解决Adobe Acrobat Pro DC提取非连续页面到单个文档的JS方案

你之前的代码问题在于extractPages方法的nStart参数仅支持单个数值,无法识别数组,所以只会提取数组第一个元素对应的页面。循环调用extractPages生成多个独立文档,确实不是最优解。

你考虑的「新建文档后循环插入页面」是Acrobat JS实现该需求的标准可行方案,下面是优化后的代码:

// 获取当前文档路径和文件名
var thisDocPath = this.path.replace(this.documentFileName, "");
var outputFileName = this.documentFileName.replace(/\.pdf$/i, "") + "_test.pdf";
var outputPath = thisDocPath + outputFileName;

// 定义需要提取的页面(注意:Acrobat JS中页面索引从0开始,若按1-based页码输入需减1)
var targetPages = [1, 5, 0]; // 对应原文档的第2、6、1页

// 创建空白PDF文档
var newDoc = app.newDoc();

try {
    // 循环将目标页面插入新文档
    for (var i = 0; i < targetPages.length; i++) {
        var pageNum = targetPages[i];
        newDoc.insertPages({
            nPage: newDoc.numPages, // 插入到新文档末尾
            cPath: this.path,
            nStart: pageNum,
            nEnd: pageNum
        });
    }

    // 保存生成的文档
    newDoc.saveAs(outputPath);
    console.log("提取完成,文件路径:" + outputPath);
} catch (e) {
    console.error("提取出错:" + e.message);
} finally {
    // 关闭新文档(无需保留在Acrobat中打开时使用)
    newDoc.closeDoc();
}

关键说明:

  • 页码索引转换:Acrobat JavaScript的页面索引从0开始,如果你习惯用1-based页码(比如原文档第1页),需要把目标页码减1后放入数组。也可以加自动转换逻辑:
    // 输入1-based页码,自动转为0-based
    var targetPages1Based = [2, 6, 1];
    var targetPages = targetPages1Based.map(num => num - 1);
    
  • 异常处理:加入try-catch可以捕获页码越界等错误,避免脚本崩溃。
  • 效率优势:该方法仅创建一个新文档,循环插入比多次提取再合并更高效,也不会生成临时文件。

内容的提问来源于stack exchange,提问作者Imran Al Rashid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:45