Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript和Acrobat DC提取PDF中超过49页时出错_Javascript_Synchronous_Acrobat_Acrobat Sdk - Fatal编程技术网

使用Javascript和Acrobat DC提取PDF中超过49页时出错

使用Javascript和Acrobat DC提取PDF中超过49页时出错,javascript,synchronous,acrobat,acrobat-sdk,Javascript,Synchronous,Acrobat,Acrobat Sdk,我有一个80到150页的PDF文档。我们在管理控制台中使用Javascript提取每个页面,并根据每个页面顶部的一些文本保存文件。以下代码适用于文件超过49页的情况。起初,我认为这是因为循环导致了一个竞争条件,closeDoc不会触发,因为循环仍然在循环。但无论我使用哪种类型的迭代器,脚本都会在文件50上崩溃,并出现以下错误: RaiseError:已打开最大数量的文件。在关闭某些文件之前,无法打开或打印其他文件 我甚至尝试了1-25循环,然后又尝试了26-50循环,等等。但同样的错误信息总是发

我有一个80到150页的PDF文档。我们在管理控制台中使用Javascript提取每个页面,并根据每个页面顶部的一些文本保存文件。以下代码适用于文件超过49页的情况。起初,我认为这是因为循环导致了一个竞争条件,closeDoc不会触发,因为循环仍然在循环。但无论我使用哪种类型的迭代器,脚本都会在文件50上崩溃,并出现以下错误:

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

我甚至尝试了1-25循环,然后又尝试了26-50循环,等等。但同样的错误信息总是发生。我还尝试了app.setTimeout,认为它可以消除种族问题。我还尝试将其作为函数调用并传入页码。不幸的是,AcrobatDC不支持wait

代码如下:

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); 
}

for(var i=0;i您可以尝试的一件事是在
closeDoc()
命令之后添加一个循环,用于检查打开的文档,并等待单页文档真正关闭。

经过一些详尽的搜索,我找到了一个有用的方法。它似乎是同一种迭代(可能需要更多时间)但这确实有效

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);
makeBlankFile=app.trustedFunction(function(){
var oNewDoc;
app.beginPriv();
oNewDoc=this.extractPages({nStart:fileCount,nEnd:fileCount});
oNewDoc.saveAs(folderPath+文件名);
oNewDoc.closeDoc(真);
app.endPriv();
fileCount++;
if(fileCount
感谢Max的建议,但是Acrobat无法判断文档是否已关闭。您可以在打开的文档上迭代,然后在那里执行一些操作,但问题是外部循环造成的。