使用Javascript和Acrobat DC

问题描述

我有一个PDF文档,可容纳80至150页。我们在管理控制台中使用Javascript提取每个页面,并根据每个页面顶部的一些文本保存文件。以下代码适用,但文件超过49页时除外。起初,我认为这是因为循环会导致竞争状态,因为循环仍在循环,closeDoc无法触发。但是无论我使用哪种类型的迭代器,脚本都会在文件50上崩溃,并显示以下错误

raiseerror:已经打开了最大数量文件。在关闭某些文件之前,无法打开或打印其他文件

我什至尝试了1-25循环,然后再尝试26-50循环,依此类推,但总是会出现相同的错误消息。我还尝试了app.setTimeout,认为它将消除种族问题。我也尝试过将其作为函数调用并传递页码。不幸的是,Acrobat DC不包括对AWAIT的支持

代码如下:

for(var i=0; i<this.numPages; i++) {

    var oNewDoc = this.extractPages({nStart: i,nEnd: i});
    
    //folderPath and filename logic goes here

    oNewDoc.saveAs(folderPath+filename);
    oNewDoc.closeDoc(true); 
}

我需要这是一个同步过程。有人有解决方案吗?

解决方法

您可以尝试的一件事是在closeDoc()命令之后添加一个循环,以检查打开的文档,并等到单页文档真正关闭为止。

,

经过详尽的搜索,我想出了一个reference可以帮助您的问题。似乎是同一类型的迭代(也许更多的时候是ish),但这确实有效。

makeBlankFile = app.trustedFunction(function() {

    var oNewDoc;
    app.beginPriv();
    oNewDoc = this.extractPages({nStart: fileCount,nEnd: fileCount});
    oNewDoc.saveAs(folderPath+filename);
    oNewDoc.closeDoc(true);
    app.endPriv();
    fileCount++;

    if (fileCount < pageInfo.length)
        t = app.setTimeOut("makeBlankFile();",10);

});

t = app.setTimeOut("makeBlankFile();",10);