使用Javascript和Acrobat DC提取PDF中超过49页时出错
我有一个80到150页的PDF文档。我们在管理控制台中使用Javascript提取每个页面,并根据每个页面顶部的一些文本保存文件。以下代码适用于文件超过49页的情况。起初,我认为这是因为循环导致了一个竞争条件,closeDoc不会触发,因为循环仍然在循环。但无论我使用哪种类型的迭代器,脚本都会在文件50上崩溃,并出现以下错误: RaiseError:已打开最大数量的文件。在关闭某些文件之前,无法打开或打印其他文件 我甚至尝试了1-25循环,然后又尝试了26-50循环,等等。但同样的错误信息总是发生。我还尝试了app.setTimeout,认为它可以消除种族问题。我还尝试将其作为函数调用并传入页码。不幸的是,AcrobatDC不支持wait 代码如下:使用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循环,等等。但同样的错误信息总是发
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无法判断文档是否已关闭。您可以在打开的文档上迭代,然后在那里执行一些操作,但问题是外部循环造成的。