Поиск и получение текстовой страницы в файле PDF
Введение
Вам когда-нибудь приходилось искать определенный текст в документе PDF и извлекать его для дальнейшего использования? Возможно, вы создаете приложение, которое обрабатывает документы и требует точного извлечения данных, или вам просто нужно эффективно анализировать PDF-файлы. В любом случае, вы в правильном месте! В этом руководстве мы рассмотрим, как искать и извлекать текст со страницы в файле PDF с помощью Aspose.PDF для .NET. Независимо от того, новичок вы или опытный разработчик, это руководство проведет вас через каждый шаг в разговорной и увлекательной манере. Готовы к работе? Давайте начнем!
Предпосылки
Прежде чем приступить к кодированию, давайте убедимся, что у вас есть все необходимое:
- Библиотека Aspose.PDF для .NET: Вы можете загрузить ее с сайтаздесь или получите бесплатную пробную версию по той же ссылке. Для покупки перейдите наМагазин Aspose.
- .NET Framework: вам понадобится рабочая среда разработки .NET, например Visual Studio.
- Файл PDF: Вам понадобится образец файла PDF, в котором мы можем искать и извлекать текст. Для этого руководства предположим, что файл называется
SearchAndGetTextPage.pdf
.
Импортные пакеты
Прежде всего, нам нужно импортировать необходимые пространства имен для работы с Aspose.PDF для .NET. Убедитесь, что они включены в начало вашего кода.
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System
Теперь, когда мы рассмотрели предварительные условия, давайте разберем код шаг за шагом. Каждый шаг был четко обозначен, чтобы было легко следовать.
Шаг 1: Укажите путь к каталогу ваших документов
Перед взаимодействием с вашим PDF-файлом вам необходимо определить путь к месту хранения вашего PDF-документа. Это гарантирует, что программа сможет получить доступ к файлу.
string dataDir = "YOUR DOCUMENT DIRECTORY";
- dataDir: Это путь к папке, где хранятся ваши PDF-файлы. Заменить
"YOUR DOCUMENT DIRECTORY"
с фактическим путем расположения PDF-файла.
Шаг 2: Загрузите PDF-документ
Следующий шаг — загрузить PDF-документ в память, чтобы с ним можно было работать. Вот как это сделать:
Document pdfDocument = new Document(dataDir + "SearchAndGetTextPage.pdf");
- Документ: это класс Aspose.PDF, который загружает PDF-файл.
- pdfDocument: переменная, в которой сохраняется ваш PDF-файл после загрузки.
Шаг 3: Создание объекта-поглотителя текста
TheTextFragmentAbsorber
класс позволяет вам искать определенный текст в PDF. Давайте создадим экземпляр этого класса, чтобы найти все экземпляры заданной поисковой фразы.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("Figure");
- TextFragmentAbsorber: этот класс отвечает за поиск и извлечение текста из PDF-файла.
- «Рисунок»: замените это любым текстом, который вы хотите найти в PDF-файле.
Шаг 4: Примените Text Absorber ко всему PDF-файлу
После настройки текстового поглотителя вам нужно указать программе выполнить поиск по всем страницам PDF-файла.
pdfDocument.Pages.Accept(textFragmentAbsorber);
- Accept(): этот метод применяет текстовый поглотитель к PDF-файлу, сканируя каждую страницу на предмет указанного вами текста.
Шаг 5: Извлечение и итерация извлеченного текста
Теперь, когда мы отсканировали PDF, пришло время извлечь результаты и отобразить их. Мы пройдемся по извлеченным фрагментам текста.
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
- TextFragmentCollection: эта коллекция содержит все экземпляры текстовых фрагментов, найденные поглотителем текста.
Шаг 6: Пройдитесь по каждому фрагменту и извлеките данные
Теперь мы пройдемся по циклуtextFragmentCollection
и извлекать различные свойства каждого текстового сегмента, такие как его положение, сведения о шрифте и цвет.
foreach (TextFragment textFragment in textFragmentCollection)
{
foreach (TextSegment textSegment in textFragment.Segments)
{
Console.WriteLine("Text : {0} ", textSegment.Text);
Console.WriteLine("Position : {0} ", textSegment.Position);
Console.WriteLine("XIndent : {0} ", textSegment.Position.XIndent);
Console.WriteLine("YIndent : {0} ", textSegment.Position.YIndent);
Console.WriteLine("Font - Name : {0}", textSegment.TextState.Font.FontName);
Console.WriteLine("Font - IsAccessible : {0} ", textSegment.TextState.Font.IsAccessible);
Console.WriteLine("Font - IsEmbedded : {0} ", textSegment.TextState.Font.IsEmbedded);
Console.WriteLine("Font - IsSubset : {0} ", textSegment.TextState.Font.IsSubset);
Console.WriteLine("Font Size : {0} ", textSegment.TextState.FontSize);
Console.WriteLine("Foreground Color : {0} ", textSegment.TextState.ForegroundColor);
}
}
- TextFragment: Каждый фрагмент содержит части найденного текста.
- TextSegment: Каждый фрагмент может иметь несколько сегментов, представляющих разные части текста.
- TextState: предоставляет подробную информацию о шрифте, размере и цвете текста.
В этом цикле мы выводим на печать такие данные, как сам текст, его положение (координаты X и Y), шрифт, встроен ли шрифт в PDF-файл, а также цвет переднего плана текста.
Заключение
И вот оно! Теперь вы успешно нашли и извлекли текст из файла PDF с помощью Aspose.PDF для .NET. Невероятно, насколько гибки вы получаете с этой библиотекой. Если вам нужно найти определенный текст в большом документе, извлечь его или проанализировать его свойства, Aspose.PDF сделает это проще простого. Кроме того, с кодом, который мы рассмотрели, вы хорошо подготовлены к его адаптации к вашим потребностям.
Часто задаваемые вопросы
Могу ли я искать несколько фраз одновременно?
Да, вы можете изменить код для поиска по нескольким фразам, создав несколькоTextFragmentAbsorber
объекты.
Как извлечь текст с определенной страницы?
Вы можете настроить таргетинг на определенную страницу, применивTextFragmentAbsorber
на одну страницу вместо всего документа. Например:pdfDocument.Pages[1].Accept(textFragmentAbsorber);
.
Является ли Aspose.PDF для .NET бесплатным?
Aspose.PDF — это коммерческий продукт, но вы можете использовать его сбесплатная пробная версия.
Можно ли извлечь изображения из PDF-файла с помощью Aspose.PDF?
Да, Aspose.PDF позволяет извлекать изображения в дополнение к тексту. Проверьтедокументация для более подробной информации.
Что делать, если мне понадобится дополнительная помощь или поддержка?
Вы всегда можете получить помощь отФорум поддержки Aspose.