Введение
Текстовые подписи — распространённый метод указания авторства, утверждения или проверки документа. В сфере управления цифровыми документами возможность программного поиска и извлечения текстовых подписей критически важна для проверки документов, автоматизации рабочих процессов и проверки соответствия требованиям. GroupDocs.Signature для .NET предлагает комплексное решение для реализации функции поиска по текстовым подписям в приложениях .NET, поддерживая различные форматы документов и расширенные возможности поиска.
В этом руководстве вы узнаете о процессе поиска текстовых подписей в документах с помощью GroupDocs.Signature для .NET, предоставив подробные объяснения, пошаговые инструкции и практические примеры кода.
Предпосылки
Прежде чем приступить к поиску текстовой сигнатуры, убедитесь, что у вас выполнены следующие предварительные условия:
GroupDocs.Signature для библиотеки .NET: загрузите и установите библиотеку с сайта страница релизов.
Среда разработки: настройте подходящую среду разработки, например Visual Studio или любую совместимую IDE с поддержкой .NET.
Образцы документов: Подготовьте тестовые документы, содержащие текстовые подписи для проверки и тестирования.
Базовые знания C#: знакомство с языком программирования C# и концепциями .NET Framework.
Импорт пространств имен
Начните с импорта необходимых пространств имен для доступа к функциональности GroupDocs.Signature:
using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;
Теперь давайте разобьем процесс поиска текстовых сигнатур на понятные и выполнимые шаги:
Шаг 1: Загрузите документ
Сначала определите путь к документу и инициализируйте Signature
объект:
string filePath = "sample_multiple_signatures.docx";
string fileName = Path.GetFileName(filePath);
using (Signature signature = new Signature(filePath))
{
// Здесь будет добавлен код поиска текстовой подписи.
}
Шаг 2: Настройте параметры поиска
Создать и настроить TextSearchOptions
чтобы указать, как следует искать текстовые подписи:
// Настройте параметры текстового поиска
TextSearchOptions options = new TextSearchOptions
{
// Поиск на всех страницах
AllPages = true,
// Необязательно: укажите текст для сопоставления
// Текст = «Одобрено»,
// Необязательно: укажите тип соответствия
// MatchType = TextMatchType.Contains
};
Шаг 3: Выполните поиск по текстовой подписи
Выполните операцию поиска, используя настроенные параметры:
// Поиск текстовых подписей
List<TextSignature> signatures = signature.Search<TextSignature>(options);
Шаг 4: Обработка и отображение результатов
Перебрать найденные текстовые сигнатуры и отобразить их детали:
// Показать результаты поиска
Console.WriteLine($"\nSource document '{fileName}' contains {signatures.Count} text signature(s):");
foreach (TextSignature textSignature in signatures)
{
Console.WriteLine($"Text signature found at page {textSignature.PageNumber} with text '{textSignature.Text}'");
Console.WriteLine($"Location: X={textSignature.Left}, Y={textSignature.Top}, Width={textSignature.Width}, Height={textSignature.Height}");
Console.WriteLine($"Signature type: {textSignature.SignatureImplementation}");
Console.WriteLine();
}
Полный пример
Вот полный рабочий пример, демонстрирующий, как искать текстовые подписи в документе:
using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Signature;
using GroupDocs.Signature.Domain;
using GroupDocs.Signature.Options;
namespace TextSignatureSearch
{
class Program
{
static void Main(string[] args)
{
// Путь к документу — обновите, указав путь к файлу
string filePath = "sample_multiple_signatures.docx";
string fileName = Path.GetFileName(filePath);
// Инициализировать экземпляр подписи
using (Signature signature = new Signature(filePath))
{
try
{
// Настройте параметры текстового поиска
TextSearchOptions options = new TextSearchOptions
{
// Поиск на всех страницах
AllPages = true
};
// Поиск текстовых подписей
List<TextSignature> signatures = signature.Search<TextSignature>(options);
// Показать результаты поиска
Console.WriteLine($"\nSource document '{fileName}' contains {signatures.Count} text signature(s):");
foreach (TextSignature textSignature in signatures)
{
Console.WriteLine($"Text signature found at page {textSignature.PageNumber} with text '{textSignature.Text}'");
Console.WriteLine($"Location: X={textSignature.Left}, Y={textSignature.Top}, Width={textSignature.Width}, Height={textSignature.Height}");
Console.WriteLine($"Signature type: {textSignature.SignatureImplementation}");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.Message}");
}
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Расширенные методы поиска текстовых подписей
Поиск по определенным текстовым критериям
Для более точного поиска вы можете настроить TextSearchOptions
для фильтрации по определенному текстовому содержимому:
// Создайте параметры поиска с определенными текстовыми критериями
TextSearchOptions options = new TextSearchOptions
{
// Поиск на всех страницах
AllPages = true,
// Поиск определенного текста
Text = "Approved",
// Укажите тип соответствия (Содержит, Точное, Начинается с, Заканчивается с)
MatchType = TextMatchType.Contains,
// Поиск с учетом регистра
MatchCase = true
};
Поиск в определенных областях документа
Вы можете ограничить поиск определенными областями документа:
// Создайте параметры поиска для определенной области документа
TextSearchOptions options = new TextSearchOptions
{
// Искать только на определенных страницах
AllPages = false,
PageNumber = 1,
// Или укажите несколько страниц
PagesSetup = new PagesSetup { Pages = new List<int> { 1, 3, 5 } },
// Определите конкретную область для поиска
Rectangle = new Rectangle(100, 100, 400, 200)
};
Расширенная фильтрация текста
Реализуйте пользовательскую логику фильтрации для более сложных требований поиска:
// Создавайте параметры поиска с помощью пользовательской обработки
TextSearchOptions options = new TextSearchOptions
{
AllPages = true,
// Определить пользовательскую обработку с помощью делегата
ProcessCompleted = (TextSignature signature) =>
{
// Пользовательская логика проверки
bool isValid = signature.Text.Length > 5 &&
(signature.Text.Contains("Approved") || signature.Text.Contains("Verified"));
return isValid;
}
};
Поиск различных стилей текста
Используйте свойства шрифта и стиля для фильтрации текстовых подписей:
// Создайте параметры поиска, ориентированные на определенный вид текста
TextSearchOptions options = new TextSearchOptions
{
// Фильтр по названию шрифта
FontName = "Arial",
// Фильтр по размеру шрифта
MinFontSize = 10,
MaxFontSize = 14,
// Фильтр по цвету шрифта
ForeColor = System.Drawing.Color.Blue
};
Извлечение метаданных подписи
Извлечение и обработка метаданных, связанных с текстовыми подписями:
foreach (TextSignature signature in signatures)
{
// Метаданные подписи доступа
if (signature.Metadata != null && signature.Metadata.Count > 0)
{
Console.WriteLine("Signature Metadata:");
foreach (var item in signature.Metadata)
{
Console.WriteLine($" {item.Key}: {item.Value}");
}
}
// Проверьте даты создания и изменения подписи
if (signature.CreatedOn.HasValue)
{
Console.WriteLine($"Created on: {signature.CreatedOn.Value}");
}
if (signature.ModifiedOn.HasValue)
{
Console.WriteLine($"Modified on: {signature.ModifiedOn.Value}");
}
}
Заключение
В этом подробном руководстве мы рассмотрели, как искать текстовые подписи в документах с помощью GroupDocs.Signature для .NET. Теперь вы обладаете знаниями, необходимыми для реализации надежной функции текстовых подписей в ваших приложениях .NET, от базовых операций поиска до продвинутых методов.
GroupDocs.Signature предоставляет мощную и гибкую платформу для работы с текстовыми подписями, позволяя вам создавать сложные системы проверки документов, автоматизированные решения для рабочих процессов и инструменты проверки соответствия.
Часто задаваемые вопросы
Можно ли искать текстовые подписи в документах, защищенных паролем?
Да, GroupDocs.Signature поддерживает поиск текстовых подписей в документах, защищённых паролем. Вы можете указать пароль при инициализации. Signature
объект:
LoadOptions loadOptions = new LoadOptions { Password = "your_password" };
using (Signature signature = new Signature(filePath, loadOptions))
{
// Поиск текстовых подписей
}
Какие форматы документов поддерживаются для поиска по текстовой подписи?
GroupDocs.Signature поддерживает широкий спектр форматов документов, включая PDF, документы Microsoft Office (Word, Excel, PowerPoint), форматы OpenOffice, изображения и многое другое.
Могу ли я искать текстовые подписи с определенным форматированием, например, жирным шрифтом или курсивом?
Да, вы можете искать текстовые подписи с определенным форматированием, используя FontBold
и FontItalic
недвижимость в TextSearchOptions
:
TextSearchOptions options = new TextSearchOptions
{
FontBold = true,
FontItalic = true
};
Как повысить эффективность поиска для больших документов?
Для больших документов вы можете оптимизировать производительность поиска следующими способами:
- Ограничение поиска определенными страницами вместо поиска по всему документу
- Использование более конкретных критериев поиска для уменьшения количества совпадений
- Указание области поиска с помощью
Rectangle
собственность, если вы знаете, где обычно находятся подписи - Реализация пагинации в вашем приложении для пакетной обработки результатов поиска
Могу ли я определить, была ли текстовая подпись добавлена в электронном виде или является частью исходного содержимого документа?
GroupDocs.Signature может различать различные типы текстовых элементов в документах. SignatureImplementation
собственность TextSignature
Указывает, является ли текст официальной подписью или обычным содержимым документа. Однако окончательное решение может зависеть от того, как текст был изначально добавлен в документ.