2011-10-28 101 views
0

在Adobe Acrobat 9中,如何應用正則表達式來搜索pdf和/或一系列pdf的索引文本?在Adobe Acrobat 9中,如何在JavaScript控制檯中使用正則表達式來搜索PDF文本?

我需要搜索的關鍵詞有200個左右,我可以通過每個索引手動完成,但是我必須爲很多索引/ pdf執行幾次這樣的操作,並且要儘可能多地自動化可能。

這是很容易搜索從JavaScript控制檯PDF的文字,說這個詞「的」:

search.query("the","ActiveDoc"); 

且具有正則表達式與你寫在控制檯中的字符串進行交互是也不是問題:

var string="I hope this works9867" 
var regex=/\d/ 

if (regex.test(string)) 
    {app.alert("win",2) 
    } 

但我不能讓一個正則表達式應用到PDF的OCR-ED文本,並已發現瞭如何使迄今沒有做導遊。似乎合乎邏輯,要麼

var regex=/\d/ 

search.query(regex,"ActiveDoc"); 

search.query(/\d/,"ActiveDoc"); 

一些相近變體的工作,但沒有骰子。有沒有辦法做到這一點?理想情況下,該方法可以用於索引和pdf。

回答

1

您不能使用正則表達式與search.query。 有兩種方法可以使搜索更容易:

方法#1:將要搜索的所有內容放入數組,並將其傳遞到search.query

myArray =「你想要搜索的東西」;
search.query(myArray,「ActiveDoc」);

你也可以改變你想要做這樣的事情的搜索方式:

search.wordMatching = 「BooleanQuery」;
search.matchWholeWord = false;
myArray =「Word1 OR Word2 OR Word3」;
search.query(myArray,「Folder」,「/ c/myDocuments」);

有關如何配置search.query的更多示例,請參閱Adobe Javascript API Reference

方法2:從PDF文檔中提取文本並對字符串執行正則表達式搜索。
以下代碼循環遍歷整個文檔,並在每個頁面上生成一串字詞,然後在字符串內搜索「Hello」。

for (var i = 0; i < this.numPages; i++) { // Loop through the entire document 
    numWords = this.getPageNumWords(i); // Find out how many words are on the page 
    var WordString = ""; // Prepare a string 
    for (var j = 0; j < numWords; j++) // Put all the words on the page into a string 
    { 
     WordString = WordString + " " + this.getPageNthWord(i, j); 
    } 
    if (WordString.match(/Hello/)) { // Search for the word "Hello" in the string 
     search.matchWholeWord = true; // If we got here, we'll search for "Hello" in the document 
     search.query(WordString.match(/Hello/), "ActiveDoc"); 
    } 
} 
+0

謝謝,這是一個非常有用和完整的答案,非常感謝。我無法獲得方法1中提出的第二個解決方案,它可以正確地工作 - 它似乎在字面上搜索「Word1或Word2或Word3」而不是使用布爾語法。不過,方法2是天賜之物。 – RSid

+0

很高興能有所幫助。此外,我忘記了在搜索活動文檔時忽略了BooleanQuery選項,因此如果您想要執行BoolQuery,則必須將「ActiveDoc」更改爲「文件夾」或「索引」並指定要搜索的文件夾或索引in。 –

+0

感謝您的糾正,現在工作很好。順便說一下,是否有可能使#2在索引,文件夾,批次序列等上運行? – RSid

相關問題