Поиск регулярного выражения в файле PDF

Введение

При работе с большими PDF-документами вы можете обнаружить, что ищете определенные шаблоны или форматы, такие как даты, телефонные номера или другие структурированные данные. Ручной просмотр PDF может быть утомительным, не так ли? Вот где использование регулярного выражения (regex) оказывается полезным. В этом руководстве мы рассмотрим, как искать шаблон регулярного выражения в PDF-файле с помощью Aspose.PDF для .NET. Это руководство проведет вас через каждый шаг, чтобы вы могли легко реализовать его в своем приложении .NET.

Предпосылки

Прежде чем мы углубимся в пошаговое руководство, давайте рассмотрим, что вам необходимо иметь под рукой:

  • Aspose.PDF для .NET: Вам необходимо установить эту библиотеку. Если вы еще не установили ее, вы можетескачать здесь.
  • IDE: Visual Studio или любая другая совместимая с C# IDE.
  • .NET Framework: убедитесь, что ваш проект настроен на использование соответствующей версии .NET Framework.
  • Базовые знания C#: хотя это руководство и подробное, базовые знания C# будут полезны.

Импортные пакеты

Для начала вам нужно импортировать необходимые пространства имен из Aspose.PDF for .NET в ваш проект. Эти пакеты необходимы для работы с PDF-файлами и выполнения операций поиска с использованием регулярных выражений.

using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Давайте разобьем процесс поиска регулярных выражений в PDF-файле с помощью Aspose.PDF на несколько этапов.

Шаг 1: Настройте каталог документов

Каждая операция PDF начинается с указания, где находится ваш документ. Вам нужно будет указать путь к вашему PDF-файлу, который хранится вdataDir переменная.

Шаг 1.1: Определите путь к документу

// Определите путь к вашему PDF-документу
string dataDir = "YOUR DOCUMENT DIRECTORY";

Заменять"YOUR DOCUMENT DIRECTORY" с фактическим путем к вашему PDF-файлу. Этот шаг имеет решающее значение, поскольку он указывает вашему коду на файл, с которым вы хотите работать.

Шаг 1.2: Откройте PDF-документ

Далее вам необходимо открыть PDF-документ с помощьюDocument класс из Aspose.PDF.

// Открыть документ
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");

Здесь,"SearchRegularExpressionAll.pdf" пример PDF-файла, в котором мы будем выполнять поиск по регулярному выражению.

Шаг 2: Настройка TextFragmentAbsorber

Вот где происходит волшебство!TextFragmentAbsorber класс помогает захватывать фрагменты текста, соответствующие определенному шаблону или регулярному выражению.

Давайте настроим абсорбер для поиска шаблонов с использованием регулярного выражения. В этом случае мы ищем шаблон лет, например “1999-2000”.

// Создайте объект TextAbsorber для поиска всех фраз, соответствующих регулярному выражению.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Как 1999-2000

Регулярное выражение\\d{4}-\\d{4} ищет последовательность из четырех цифр, за которыми следует дефис и еще четыре цифры, что типично для диапазонов лет.

Шаг 3: Включите поиск по регулярным выражениям

Чтобы гарантировать, что операция поиска интерпретирует шаблон как регулярное выражение, необходимо настроить параметры поиска с помощьюTextSearchOptions сорт.

// Установите параметр текстового поиска, чтобы указать использование регулярных выражений
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

УстановкаTextSearchOptions кtrue гарантирует, что поглотитель использует поиск на основе регулярных выражений, а не простого текста.

Шаг 4: Примите Text Absorber

На этом этапе вы применяете текстовый поглотитель к документу PDF, чтобы он мог выполнить операцию поиска. Это делается путем вызоваAccept метод наPages объект PDF-документа.

// Принять поглотитель для всех страниц
pdfDocument.Pages.Accept(textFragmentAbsorber);

Эта команда обрабатывает все страницы PDF-файла, ища текст, соответствующий регулярному выражению.

Шаг 5: Извлечение и отображение результатов

После завершения поиска необходимо извлечь результаты.TextFragmentAbsorber сохраняет эти результаты вTextFragmentCollection. Вы можете просмотреть эту коллекцию, чтобы получить доступ и отобразить каждый соответствующий фрагмент текста.

Шаг 5.1: Извлечение извлеченных фрагментов текста

// Получить извлеченные фрагменты текста
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

Теперь, когда вы собрали фрагменты, пришло время просмотреть их и отобразить соответствующие данные, такие как текст, положение, сведения о шрифте и многое другое.

Шаг 5.2: Перебор фрагментов

// Просмотрите фрагменты
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}

Для каждогоTextFragment, распечатываются такие данные, как размер шрифта, название шрифта и положение. Это не только помогает найти текст, но и дает вам его точное форматирование и местоположение.

Заключение

Вот и все! Поиск шаблонов в PDF-файле с использованием регулярных выражений невероятно эффективен, особенно для структурированного текста, такого как даты, телефонные номера и подобные шаблоны. Aspose.PDF для .NET обеспечивает простой способ выполнения таких операций с легкостью. Теперь вы можете использовать мощь регулярных выражений для автоматизации поиска текста в PDF-файлах, делая свой рабочий процесс более эффективным.

Часто задаваемые вопросы

Могу ли я искать несколько шаблонов в одном PDF-файле?

Да, вы можете запустить несколькоTextFragmentAbsorber объекты, каждый из которых имеет свой шаблон регулярного выражения, в одном и том же PDF-файле.

Поддерживает ли Aspose.PDF поиск шаблонов без учета регистра?

Конечно! Вы можете настроитьTextSearchOptions чтобы сделать поиск нечувствительным к регистру.

Есть ли ограничение на размер PDF-файла, в котором я могу выполнять поиск?

Строгих ограничений нет, но производительность может варьироваться в зависимости от размера PDF-файла и сложности шаблона регулярного выражения.

Могу ли я выделить найденный текст в PDF-файле?

Да, Aspose.PDF позволяет выделять или даже заменять текст после его обнаружения с помощью поглотителя.

Как обрабатывать ошибки, если шаблон не найден?

Если совпадений не найдено,TextFragmentCollection будет пустым. Вы можете справиться с этим сценарием с помощью простой проверки перед циклическим просмотром результатов.