Введение

Текстовые подписи — распространённый метод указания авторства, утверждения или проверки документа. В сфере управления цифровыми документами возможность программного поиска и извлечения текстовых подписей критически важна для проверки документов, автоматизации рабочих процессов и проверки соответствия требованиям. GroupDocs.Signature для .NET предлагает комплексное решение для реализации функции поиска по текстовым подписям в приложениях .NET, поддерживая различные форматы документов и расширенные возможности поиска.

В этом руководстве вы узнаете о процессе поиска текстовых подписей в документах с помощью GroupDocs.Signature для .NET, предоставив подробные объяснения, пошаговые инструкции и практические примеры кода.

Предпосылки

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

  1. GroupDocs.Signature для библиотеки .NET: загрузите и установите библиотеку с сайта страница релизов.

  2. Среда разработки: настройте подходящую среду разработки, например Visual Studio или любую совместимую IDE с поддержкой .NET.

  3. Образцы документов: Подготовьте тестовые документы, содержащие текстовые подписи для проверки и тестирования.

  4. Базовые знания 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
};

Как повысить эффективность поиска для больших документов?

Для больших документов вы можете оптимизировать производительность поиска следующими способами:

  1. Ограничение поиска определенными страницами вместо поиска по всему документу
  2. Использование более конкретных критериев поиска для уменьшения количества совпадений
  3. Указание области поиска с помощью Rectangle собственность, если вы знаете, где обычно находятся подписи
  4. Реализация пагинации в вашем приложении для пакетной обработки результатов поиска

Могу ли я определить, была ли текстовая подпись добавлена в электронном виде или является частью исходного содержимого документа?

GroupDocs.Signature может различать различные типы текстовых элементов в документах. SignatureImplementation собственность TextSignature Указывает, является ли текст официальной подписью или обычным содержимым документа. Однако окончательное решение может зависеть от того, как текст был изначально добавлен в документ.

Смотрите также