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