Выделить символ в PDF-файле
В этом уроке мы объясним, как выделить символы в PDF-файле с помощью библиотеки Aspose.PDF для .NET. Мы пройдем пошаговый процесс выделения символов в PDF-файле, используя предоставленный исходный код C#.
Требования
Прежде чем начать, убедитесь, что у вас есть следующее:
- Установлена библиотека Aspose.PDF для .NET.
- Базовое понимание программирования на C#.
Шаг 1. Настройте каталог документов
Сначала вам нужно указать путь к каталогу, в котором находится входной PDF-файл. Заменять"YOUR DOCUMENT DIRECTORY"
вdataDir
переменная с путем к вашему PDF-файлу.
string dataDir = "YOUR DOCUMENT DIRECTORY";
Шаг 2. Загрузите PDF-документ
Затем мы загружаем входной PDF-документ, используяAspose.Pdf.Document
сорт.
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");
Шаг 3. Конвертируйте PDF в изображение
Чтобы выделить символы, мы конвертируем PDF-документ в изображение с помощьюPdfConverter
сорт. Мы устанавливаем разрешение для преобразования и получаем изображение в видеBitmap
объект.
int resolution = 150;
using (MemoryStream ms = new MemoryStream())
{
PdfConverter conv = new PdfConverter(pdfDocument);
conv. Resolution = new Resolution(resolution, resolution);
conv. GetNextImage(ms, System.Drawing.Imaging.ImageFormat.Png);
Bitmap bmp = (Bitmap)Bitmap.FromStream(ms);
Шаг 4: Выделите персонажей
Мы просматриваем каждую страницу PDF-документа и используемTextFragmentAbsorber
объект, чтобы найти все слова на странице. Затем мы перебираем текстовые фрагменты, сегменты и символы, чтобы выделить их с помощью прямоугольников.
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
//Установите масштаб и трансформируйте
float scale = resolution / 72f;
gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);
// Перелистывание страниц
for (int i = 0; i < pdfDocument.Pages.Count; i++)
{
Page page = pdfDocument.Pages[1];
// Найдите все слова на странице
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
page. Accept(textFragmentAbsorber);
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// Перебирать фрагменты текста
foreach(TextFragment textFragment in textFragmentCollection)
{
if (i == 0)
{
// Выделение персонажей
gr.DrawRectangle(
Think.Yellow,
(float)textFragment.Position.XIndent,
(float)textFragment.Position.YIndent,
(float)textFragment.Rectangle.Width,
(float)textFragment.Rectangle.Height);
// Перебирать сегменты
foreach(TextSegment segment in textFragment.Segments)
{
// Выделить сегмент
gr.DrawRectangle(
Think Green,
(float)segment.Rectangle.LLX,
(float)segment.Rectangle.LLY,
(float)segment.Rectangle.Width,
(float)segment.Rectangle.Height);
// Перебирать символы
foreach(CharInfo characterInfo in segment.Characters)
{
// Выделить персонажа
gr.DrawRectangle(
Think.Black,
(float)characterInfo.Rectangle.LLx,
(float)characterInfo.Rectangle.LLY,
(float)characterInfo.Rectangle.Width,
(float)characterInfo.Rectangle.Height);
}
}
}
}
}
}
Шаг 5. Сохраните выходное изображение
Наконец, мы сохраняем измененное изображение с выделенными символами в указанный выходной файл.
dataDir = dataDir + "HighlightCharacterInPDF_out.png";
bmp.Save(dataDir, System.Drawing.Imaging.ImageFormat.Png);
Пример исходного кода для выделения символов в PDF с использованием Aspose.PDF для .NET
try
{
// Путь к каталогу документов.
string dataDir = "YOUR DOCUMENT DIRECTORY";
int resolution = 150;
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");
using (MemoryStream ms = new MemoryStream())
{
PdfConverter conv = new PdfConverter(pdfDocument);
conv.Resolution = new Resolution(resolution, resolution);
conv.GetNextImage(ms, System.Drawing.Imaging.ImageFormat.Png);
Bitmap bmp = (Bitmap)Bitmap.FromStream(ms);
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
float scale = resolution / 72f;
gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);
for (int i = 0; i < pdfDocument.Pages.Count; i++)
{
Page page = pdfDocument.Pages[1];
// Создайте объект TextAbsorber, чтобы найти все слова.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
page.Accept(textFragmentAbsorber);
// Получить извлеченные фрагменты текста
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// Перебирать фрагменты
foreach (TextFragment textFragment in textFragmentCollection)
{
if (i == 0)
{
gr.DrawRectangle(
Pens.Yellow,
(float)textFragment.Position.XIndent,
(float)textFragment.Position.YIndent,
(float)textFragment.Rectangle.Width,
(float)textFragment.Rectangle.Height);
for (int segNum = 1; segNum <= textFragment.Segments.Count; segNum++)
{
TextSegment segment = textFragment.Segments[segNum];
for (int charNum = 1; charNum <= segment.Characters.Count; charNum++)
{
CharInfo characterInfo = segment.Characters[charNum];
Aspose.Pdf.Rectangle rect = page.GetPageRect(true);
Console.WriteLine("TextFragment = " + textFragment.Text + " Page URY = " + rect.URY +
" TextFragment URY = " + textFragment.Rectangle.URY);
gr.DrawRectangle(
Pens.Black,
(float)characterInfo.Rectangle.LLX,
(float)characterInfo.Rectangle.LLY,
(float)characterInfo.Rectangle.Width,
(float)characterInfo.Rectangle.Height);
}
gr.DrawRectangle(
Pens.Green,
(float)segment.Rectangle.LLX,
(float)segment.Rectangle.LLY,
(float)segment.Rectangle.Width,
(float)segment.Rectangle.Height);
}
}
}
}
}
dataDir = dataDir + "HighlightCharacterInPDF_out.png";
bmp.Save(dataDir, System.Drawing.Imaging.ImageFormat.Png);
}
Console.WriteLine("\nCharacters highlighted successfully in pdf document.\nFile saved at " + dataDir);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\nThis example will only work if you apply a valid Aspose License. You can purchase full license or get 30 day temporary license from http:// www.aspose.com/purchase/default.aspx.");
}
Заключение
В этом уроке вы узнали, как выделять символы в PDF-документе с помощью библиотеки Aspose.PDF для .NET. Следуя пошаговому руководству и выполнив предоставленный код C#, вы можете выделить символы в PDF-файле и сохранить результат в виде изображения.
Часто задаваемые вопросы
Вопрос: Какова цель урока «Выделение символов в PDF-файле»?
О: В учебнике «Выделение символов в PDF-файле» объясняется, как использовать библиотеку Aspose.PDF для .NET для выделения символов в PDF-документе. Учебное пособие содержит пошаговое руководство и исходный код C# для достижения этой цели.
Вопрос: Зачем мне выделять символы в PDF-документе?
О: Выделение символов в PDF-документе может быть полезно для различных целей, например для выделения определенного содержимого или повышения заметности и различимости определенного текста.
Вопрос: Как настроить каталог документов?
О: Чтобы настроить каталог документов:
- Заменять
"YOUR DOCUMENT DIRECTORY"
вdataDir
переменная с путем к каталогу, в котором находится входной PDF-файл.
Вопрос: Как загрузить PDF-документ и преобразовать его в изображение?
О: В учебникеAspose.Pdf.Document
Класс используется для загрузки входного PDF-документа. ЗатемPdfConverter
Класс используется для преобразования PDF-документа в изображение. Разрешение изображения установлено, и изображение извлекается в видеBitmap
объект.
Вопрос: Как выделить символы в изображении PDF-документа?
О: В этом руководстве вы проведете циклически по каждой странице PDF-документа, находя слова с помощьюTextFragmentAbsorber
и перебирать фрагменты текста, сегменты и символы, чтобы выделить их с помощью прямоугольников.
Вопрос: Могу ли я настроить внешний вид выделенных символов и сегментов?
О: Да, вы можете настроить внешний вид выделенных символов и сегментов, изменяя цвета и стили, используемые в операциях рисования.
Вопрос: Как сохранить измененное изображение с выделенными символами?
О: В учебнике показано, как сохранить измененное изображение с выделенными символами в указанный выходной файл с помощью командыSave
методBitmap
сорт.
Вопрос: Требуется ли для работы с этим руководством действующая лицензия Aspose?
О: Да, для корректной работы этого руководства требуется действующая лицензия Aspose. Вы можете приобрести полную лицензию или получить 30-дневную временную лицензию на веб-сайте Aspose.