2016-01-25 66 views
0

問題:我經常收到PDF報告並註釋(高亮等)其中的一些。我有把註釋的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(即意味着例如「counter」變量沒有意義;它總是= 1。但更重要的是,當中間代碼在不同的PDF上運行時,var「rep」將被取消分配)。 2.我應該如何讓僅運行的代碼一次只在開始或結束時運行,而不是每次運行每個PDF(如默認情況下那樣)?

非常感謝您的幫助!

+0

必須在每個文件中運行synchAnnotScan()和getAnnots()命令,因爲這實際上是如何在文檔中讀取註釋的。 –

+0

哎喲,你是對的。對不起,寫作時我很累......我修好了,但是你知道如何只運行一次函數嗎? – flen

+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 
} 

而且應該讓你到那裏。

我不完全肯定,但我認爲還有一個預檢檢查,告訴你文檔中是否有註釋。如果是這樣,您將創建一個預檢液滴,它將整理註釋的和未註釋的文檔。

+0

非常感謝您的回覆!我檢查了預檢部分,特別是在「PDF分析」下,但沒有運氣。我在「動作嚮導」中創建了一個可以工作的「動作」(請參閱​​我編輯的文章),但問題是它對所列出的所有PDF應用*完全相同的動作集。是否有可能讓它記住以前的代碼,應用於以前的PDF? – flen

0

先生韋斯是正確的,這裏有一個一步一步的指導:

  1. 在Acrobat XI Pro中,進入「工具」面板的右側
  2. 點擊「操作嚮導」選項卡(必須先使它可見,但)
  3. 點擊'創建新的動作...',選擇'更多工具'>'執行Javascript'並將其添加到右側窗格>點擊'執行Javascript'>'指定設置' (如果需要,請取消'提示用戶')>粘貼此代碼:

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有一個錯誤,它不允許Docs在他們的名字中用逗號(「,」)保存(例如,「與供應商會面,5月11日.pdf」) - 這會得到一個錯誤)。因此,我將上面的代碼替換爲「,」替換爲「;」。