Дополнительные аннотации на C#
Как добавить аннотацию Caret в существующий PDF-файл
Аннотация Caret - это символ, указывающий на редактирование текста. Аннотация Caret также является разметочной аннотацией, поэтому класс Caret наследуется от класса Markup и также предоставляет функции для получения или установки свойств аннотации Caret и сброса потока внешнего вида аннотации Caret.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Шаги, с помощью которых мы создаем аннотацию Caret:
- Загрузите PDF-файл - новый Документ.
- Создайте новую Аннотацию Caret и установите параметры Caret (новый Rectangle, title, Subject, Flags, color, width, StartingStyle и EndingStyle). Эта аннотация используется для указания вставки текста.
- Создайте новую StrikeOutAnnotation и установите параметры (новый Rectangle, title, color, новые QuadPoints и новые points, Subject, InReplyTo, ReplyType).
- После мы можем добавить аннотации на страницу.
Следующий пример кода показывает, как добавить аннотацию 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");