问题:我经常接收PDF报告并注释(突出显示)其中一些。我养成了将带注释的PDF与未注释的PDF一起保存的坏习惯。我现在在相同的文件夹中有数百个PDF文件,有些是注释的,有些则没有。有没有办法检查每个PDF文件的注释,只将带注释的文件复制到新文件夹?
非常感谢!
我在Win 7 64bit上,我安装了Adobe Acrobat XI,我可以用Python和Javascript做一些初学者编码
请忽略以下建议,因为答案已经解决了问题。
编辑:根据Wyss先生的建议,我为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重新应用相同的代码(这意味着“计数器”变量,例如,没有意义;它将始终be = 1.但更重要的是,当中间代码在不同的PDF上运行时,var“rep”将被取消分配。
2.如何只在开始或结束时只运行一次运行的代码,而不是每次运行每个PDF(就像默认情况下那样)?
再次感谢你的帮助!
答案 0 :(得分:0)
使用动作向导可以将动作放在一起。
确定文档中是否有注释的功能将在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
}
这应该会让你到那儿。
我不是完全正面的,但我认为还有预检检查,它会告诉您文档中是否有注释。如果是这样,您将创建一个Preflight Droplet,它将整理带注释和未注释的文档。
答案 1 :(得分:0)
先生。 Wyss是对的,这是一个循序渐进的指南:
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:\ folder' (但仅当此文件夹已存在时!)
请务必在'编辑'中启用第一个Javascript。 > '首...' > '的Javascript' > '启用Acrobat Javascript'。
非常重要:Acrobat的JS有一个错误,不允许在其名称中用逗号(",")保存文档(例如,"会议与供应商,5月11日.pdf" - 这将得到一个错误)。因此,我在上面的代码中替换所有"," for";"。