问题:我经常收到PDF报告和注释(高亮显示等),其中的一些。我曾与未标注的PDF文件一起保存批注的PDF文件的坏习惯。我现在有几百个在同一文件夹中的PDF文件中,一些注释,有些不是。有没有一种方法来检查注释和副本只有那些注释每个PDF文件到一个新的文件夹?
非常感谢!
我在Win 7 64位,我有安装Adobe Acrobat XI和我能够做一些初级的编码在Python和JavaScript
请忽略以下建议,因为答案已经解决了这个问题。
编辑:继韦斯先生的建议下,我创建为Acrobat的JavaScript控制台下面的代码将在开始时只运行一次:
counter = 1;
// Open a new report
var rep = new Report();
rep.size = 1.2;
rep.color = color.blue;
rep.writeText("Files WITH Annotations");
那么这段代码也应适用于所有的PDF文件:
this.syncAnnotScan();
annots = this.getAnnots();
path = this.path;
if (annots) {
rep.color = color.black;
rep.writeText(" ");
rep.writeText(counter.toString()+"- "+path);
rep.writeText(" ");
if (counter% 20 == 0) {
rep.breakPage();
}
counter++;
}
而且,最后,一个代码只进行一次,在结束时运行:
//Now open the report
var docRep = rep.open("files_with_annots.pdf");
有两个问题的解决方案:
1.“操作向导”似乎总是重新应用相同的代码添加到每个PDF(这意味着,“反”变量,例如,是毫无意义的,它永远是= 1。但更重要的是,变种“代表”将当中间代码是在不同的PDF运行是未赋值)。 2.我怎样才能让应只运行一次的代码只在开始或结束时运行,而不是为每一个PDF运行每次(像它在默认情况下),?
再次感谢您的帮助!
这将使用Action向导放在一起的行动是可能的。
该函数来确定是否有在文档中的注释将在Acrobat的JavaScript来实现。粗略地说,核心功能是这样的:
this.syncAnnotScan() ; // updates all annots
var myAnnots = this.getAnnots() ;
if (myAnnots != null) {
// do something if there are annots
} else {
// do something if there are no annots
}
这应该让你那里。
我不能完全肯定的,但我认为还有一个预检检查,告诉你是否有文件中注释。如果是这样,你可以创建一个预检液滴,这将挑选出的注解,而不是注释的文档。
怀斯先生是正确的,这里有一个一步一步的指导:
.
this.syncAnnotScan();
var annots = this.getAnnots();
var fname = this.documentFileName;
fname = fname.replace(",", ";");
var errormsg = "";
if (annots) {
try {
this.saveAs({
cPath: "/c/folder/"+fname,
bPromptToOverwrite: false //make this 'true' if you want to be prompted on overwrites
});
} catch(e) {
for (var i in e)
{errormsg+= (i + ": " + e[i]+ " / ");}
app.alert({
cMsg: "Error! Unable to save the file under this name ('"+fname+"'- possibly an unicode string?) See this: "+errormsg,
cTitle: "Damn you Acrobat"
});
}
;}
annots = 0;
保存并运行它!您的所有注释PDF文件将被保存到“C:\文件夹”(!但前提是这个文件夹已经存在)
一定要启用“编辑”第一个JavaScript>“首选项...”>“的JavaScript”>“启用Acrobat中的Javascript”。
非常重要:Acrobat的JS有不允许文档与逗号得救(“”)在其名称中的错误(例如,‘与供应商,五月11th.pdf会议’ - 这会得到一个错误)。因此,我代替上面所有的代码“”为‘;’。