Дополнительные аннотации на C#

Как добавить аннотацию Caret в существующий PDF-файл

Аннотация Caret - это символ, указывающий на редактирование текста. Аннотация Caret также является разметочной аннотацией, поэтому класс Caret наследуется от класса Markup и также предоставляет функции для получения или установки свойств аннотации Caret и сброса потока внешнего вида аннотации Caret.

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Шаги, с помощью которых мы создаем аннотацию Caret:

  1. Загрузите PDF-файл - новый Документ.
  2. Создайте новую Аннотацию Caret и установите параметры Caret (новый Rectangle, title, Subject, Flags, color, width, StartingStyle и EndingStyle). Эта аннотация используется для указания вставки текста.
  3. Создайте новую StrikeOutAnnotation и установите параметры (новый Rectangle, title, color, новые QuadPoints и новые points, Subject, InReplyTo, ReplyType).
  4. После мы можем добавить аннотации на страницу.

Следующий пример кода показывает, как добавить аннотацию Caret в файл PDF:

using Aspose.Pdf.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aspose.Pdf.Examples.Advanced
{
    class ExampleCaretAnnotation
    {
        // Путь к директории с документами.
        private const string _dataDir = "..\\..\\..\\..\\Samples";
        public static void AddCaretAnnotation()
        {
            // Загрузка файла PDF
            Document document = new Document(System.IO.Path.Combine(_dataDir, "sample.pdf"));
            // Эта аннотация используется для указания вставки текста
            var caretAnnotation1 = new CaretAnnotation(document.Pages[1], new Rectangle(299.988, 713.664, 308.708, 720.769))
            {
                Title = "Пользователь Aspose",
                Subject = "Вставленный текст 1",
                Flags = AnnotationFlags.Print,
                Color = Color.Blue
            };
            // Эта аннотация используется для указания замены текста
            var caretAnnotation2 = new CaretAnnotation(document.Pages[1], new Rectangle(361.246, 727.908, 370.081, 735.107))
            {
                Flags = AnnotationFlags.Print,
                Subject = "Вставленный текст 2",
                Title = "Пользователь Aspose",
                Color = Color.Blue
            };

            var strikeOutAnnotation = new StrikeOutAnnotation(document.Pages[1],
                new Rectangle(318.407, 727.826, 368.916, 740.098))
            {
                Color = Color.Blue,
                QuadPoints = new[] {
                new Point(321.66, 739.416),
                new Point(365.664, 739.416),
                new Point(321.66, 728.508),
                new Point(365.664, 728.508)
            },
                Subject = "Зачеркнуто",
                InReplyTo = caretAnnotation2,
                ReplyType = ReplyType.Group
            };

            document.Pages[1].Annotations.Add(caretAnnotation1);
            document.Pages[1].Annotations.Add(caretAnnotation2);
            document.Pages[1].Annotations.Add(strikeOutAnnotation);

            document.Save(System.IO.Path.Combine(_dataDir, "sample_caret.pdf"));
        }

Получение аннотации каретки

Пожалуйста, используйте следующий фрагмент кода для получения аннотации каретки в документе PDF

public static void GetCaretAnnotation()
{
    // Загрузка файла PDF
    Document document = new Document(System.IO.Path.Combine(_dataDir, "sample_caret.pdf"));
    var caretAnnotations = document.Pages[1].Annotations
        .Where(a => a.AnnotationType == AnnotationType.Caret)
        .Cast<CaretAnnotation>();
    foreach (var ca in caretAnnotations)
    {
        Console.WriteLine($"{ca.Rect}");
    }
}

Удаление аннотации каретки

Следующий фрагмент кода показывает, как удалить аннотацию каретки из файла PDF.

public static void DeleteCaretAnnotation()
{
    // Загрузка файла PDF
    Document document = new Document(System.IO.Path.Combine(_dataDir, "sample_caret.pdf"));
    var caretAnnotations = document.Pages[1].Annotations
        .Where(a => a.AnnotationType == AnnotationType.Caret)
        .Cast<CaretAnnotation>();

    foreach (var ca in caretAnnotations)
    {
        document.Pages[1].Annotations.Delete(ca);
    }
    document.Save(System.IO.Path.Combine(_dataDir, "sample_caret_del.pdf"));
}

Закрытие определенной области страницы с помощью аннотации Redaction Annotation в Aspose.PDF для .NET

Aspose.PDF для .NET поддерживает возможность добавления и манипулирования аннотациями в существующем PDF-файле. Недавно некоторые наши клиенты выразили потребность в закрытии (удалении текста, изображений и т. д. элементов из) определенной области страницы PDF-документа. Для выполнения этого требования предоставляется класс под названием RedactionAnnotation, который можно использовать для закрытия определенных областей страницы или для манипулирования существующими RedactionAnnotations и их закрытием (т.е. сглаживание аннотации и удаление текста под ней).

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();

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

// Создать экземпляр RedactionAnnotation для конкретной области страницы
RedactionAnnotation annot = new RedactionAnnotation(doc.Pages[1], new Aspose.Pdf.Rectangle(200, 500, 300, 600));
annot.FillColor = Aspose.Pdf.Color.Green;
annot.BorderColor = Aspose.Pdf.Color.Yellow;
annot.Color = Aspose.Pdf.Color.Blue;
// Текст, который будет напечатан на аннотации закрытия
annot.OverlayText = "REDACTED";
annot.TextAlignment = Aspose.Pdf.HorizontalAlignment.Center;
// Повтор текста закрытия на аннотации
annot.Repeat = true;
// Добавить аннотацию в коллекцию аннотаций первой страницы
doc.Pages[1].Annotations.Add(annot);
// Сглаживание аннотации и закрытие содержимого страницы (т.е. удаление текста и изображения
// Под закрытой аннотацией)
annot.Redact();
dataDir = dataDir + "RedactPage_out.pdf";
doc.Save(dataDir);

Подход с использованием фасадов

Пространство имен Aspose.PDF.Facades также имеет класс с именем PdfAnnotationEditor, который предоставляет возможность управлять существующими аннотациями в файле PDF. Этот класс содержит метод с именем RedactArea(..), который позволяет удалять определенные области страницы.

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Annotations();

Aspose.Pdf.Facades.PdfAnnotationEditor редактор = new Aspose.Pdf.Facades.PdfAnnotationEditor();
// Закрасить определенную область страницы
редактор.RedactArea(1, new Aspose.Pdf.Rectangle(100, 100, 20, 70), System.Drawing.Color.White);
редактор.BindPdf(dataDir + "input.pdf");
редактор.Save(dataDir + "FacadesApproach_out.pdf");