В Adobe Acrobat 9, как использовать регулярные выражения в консоли JavaScript для поиска текста в PDF? - PullRequest
0 голосов
/ 29 октября 2011

В Adobe Acrobat 9, как применить регулярное выражение для поиска в тексте PDF-файла и / или в индексе серии PDF-файлов?

Есть около 200 ключевых слов, которые мне нужно искать, и я мог бы сделать это вручную по каждому индексу, но мне придется делать это несколько раз для большого количества индексов / PDF-файлов и я хочу максимально автоматизировать ,

Достаточно легко найти текст в формате pdf из консоли JavaScript, скажем, по слову «the»:

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

И регулярное выражение взаимодействует со строкой, которую вы написали в консоли, также не проблема:

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

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

Но я не могу получить регулярное выражение для применения к тексту pdf в формате OCR, и пока не нашел руководств, как это сделать. Казалось логичным, что либо

var regex=/\d/

search.query(regex,"ActiveDoc");

или некоторый закрытый вариант на

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

будет работать, но без игры в кости. Есть ли способ сделать это? В идеале метод должен работать как для индексов, так и для PDF-файлов.

1 Ответ

1 голос
/ 01 ноября 2011

Вы не можете использовать регулярные выражения с search.query. Есть два способа сделать поиск проще:

Метод № 1: Поместите все, что вы хотите найти, в массив и передайте это search.query.

myArray = "материал, который вы хотите найти";
search.query (myArray, "ActiveDoc");

Вы также можете изменить способ поиска, выполнив что-то вроде этого:

search.wordMatching = "BooleanQuery";
search.matchWholeWord = false;
myArray = "Word1 ИЛИ Word2 ИЛИ Word3";
search.query (myArray, "Папка", "/ c / myDocuments");

Дополнительные примеры настройки search.query см. В справочнике по API Javascript .

.

Метод № 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");
    }
}
...