Основне керування PDF‑документами охоплює операції, які зустрічаються майже в кожному PDF‑робочому процесі: відкриття або створення документа, доступ до сторінок і їхнього вмісту, читання та запис анотацій, видобуток тексту та робота з інтерактивними діями. Aspose.PDF FOSS for .NET надає API .NET 8+, яке виконує всі ці завдання через послідовну модель об’єктів, зосереджену навколо типів Document та Page.
Життєвий цикл документа: Створення, Відкриття, Збереження
Кожен робочий процес починається або зі створення нового документа, або завантаження існуючого. Document.Create() повертає новий порожній Document екземпляр. Document.Open(data) приймає byte[] або Stream і аналізує структуру PDF:
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com
Цей фрагмент відкриває мінімальний PDF, додає анотацію посилання до сторінки 1, зберігає у MemoryStream і перевіряє, що анотація збережена після перезавантаження. Перевантаження Document.Save(Stream) записує повну оновлену структуру; Document.ToArray() повертає байти безпосередньо.
Доступ до сторінок і колекція Pages
Сторінки доступні через властивість Pages, використовуючи індекс цілим числом, що починається з 1: doc.Pages[1] повертає першу сторінку, doc.Pages[doc.Pages.Count] повертає останню. Кожен об’єкт Page надає:
Annotations— цеAnnotationCollectionдля цієї сторінки, що підтримуєAddLinkAnnotationта перелік існуючих анотацій за типом.- Оператори потоку вмісту — низькорівневий доступ до команд малювання сторінки через колекцію
Operators.
Індекс, що починається з 1, послідовний у всьому API: пошук анотацій, індекси сторінок призначення дії GoTo та всі інші посилання на сторінки використовують одну й ту ж конвенцію.
Видобування тексту за допомогою TextFragmentAbsorber
TextFragmentAbsorber є стандартною точкою входу для читання тексту зі сторінки PDF. Використовуйте конструктор без аргументів, щоб витягнути всі фрагменти, або передайте пошукову фразу, щоб відфільтрувати відповідний текст:
using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text} size={fragment.FontSize}");
}
Викличте absorber.Visit(page) для обробки однієї сторінки. Отримана колекція TextFragments містить TextFragment об’єкти; кожен надає Text (вміст рядка) і FontSize (розмір у пунктах після рендерингу). Друге перевантаження TextFragmentAbsorber(searchPhrase, isRegex) приймає прапорець регулярного виразу для пошуку за шаблоном.
Інтерактивні дії
PdfAction — це фабричний клас для всіх стандартних типів дій PDF. Чотири статичні фабричні методи охоплюють найбільш поширені випадки:
PdfAction.CreateUri(uri)— відкриває URL у браузері користувача.PdfAction.CreateGoTo(pageIndex, fitType)— переміщається на певну сторінку в документі.PdfAction.CreateJavaScript(script)— виконує рядок JavaScript у переглядачі PDF.PdfAction.CreateLaunch(filePath)— запускає зовнішній файл або застосунок.
Дії прив’язуються до сторінок за допомогою анотацій. AnnotationCollection.AddLinkAnnotation(rectangle, action) розміщує LinkAnnotation над зазначеною прямокутною областю з прикріпленою вказаною дією:
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://example.org");
var annot = page.Annotations.AddLinkAnnotation(new Rectangle(10, 10, 100, 30), action);
Console.WriteLine(page.Annotations.Count); // 1
Console.WriteLine(annot.AnnotationType); // Link
AnnotationType.Link підтверджує, що анотація була створена як тип посилання. Конструктор Rectangle приймає координати left, bottom, right і top у одиницях простору користувача PDF.
Метадані документа та ліцензування
Клас Document надає IsLicensed (повертає true у FOSS збірці), JavaScript (JavaScriptCollection для скриптів рівня документа) та DocumentActions для подій життєвого циклу, таких як BeforeClosing і BeforeSaving.
Пакет FOSS встановлюється через NuGet:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
Ліцензійний ключ не потрібен. Ліцензія MIT дозволяє використання у комерційних застосунках без вимог щодо атрибуції, окрім збереження повідомлення про ліцензію.