Основне керування 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 дозволяє використання у комерційних застосунках без вимог щодо атрибуції, окрім збереження повідомлення про ліцензію.


Початок роботи

Пов’язані ресурси