Aspose.PDF FOSS for .NET — це безкоштовна бібліотека .NET з ліцензією MIT для читання, створення та маніпулювання PDF‑документами. Випущена під permissive open‑source ліцензією, вона усуває традиційну перешкоду до корпоративного рівня можливостей PDF — усі функції бібліотеки доступні без придбання комерційної ліцензії.
Що таке Aspose.PDF FOSS для .NET?
Бібліотека орієнтована на .NET 8 та новіші. Вона опублікована в NuGet під ідентифікатором пакету Aspose.Pdf.Foss і може бути додана до будь‑якого проєкту .NET 8+ за допомогою однієї команди:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
Основний простір імен — Aspose.Pdf, пов’язані простори імен включають Aspose.Pdf.Text, Aspose.Pdf.Forms та Aspose.Pdf.Facades. Бібліотека надає 805 публічних API‑класів, підкріплених 7 488 задокументованими твердженнями та 100 фрагментами коду, витягнутими безпосередньо з тестового набору.
Основні можливості
API охоплює повний життєвий цикл PDF‑документа:
- Створення та завантаження документу —
Document.Create()створює порожній документ;Document.Open(data)завантажує існуючий PDF з масиву байтів або потоку. - Доступ до сторінок та вмісту — колекція
Pagesзабезпечує індексований доступ (починаючи з 1) до окремих сторінок, кожна з яких відкриває анотації, оператори та потоки вмісту. - Видобуток тексту —
TextFragmentAbsorberвідвідує сторінку та збирає кожен текстовий фрагмент, з можливістю фільтрації за пошуковою фразою та підтримкою регулярних виразів. - Інтерактивні дії —
PdfAction.CreateUri,PdfAction.CreateGoTo,PdfAction.CreateJavaScriptтаPdfAction.CreateLaunchохоплюють стандартні типи дій PDF. - Анотації —
AnnotationCollection.AddLinkAnnotationдодає анотацію посилання з пов’язаною дією до будь-якої прямокутної області на сторінці. - Форми — простір імен
Aspose.Pdf.FormsтаAspose.Pdf.Facadesзабезпечують доступ до полів AcroForm, форматування зовнішнього вигляду та розширень JavaScript на рівні полів.
Відкриття документа та додавання посилання
Наступний приклад демонструє шаблон round‑trip: створити новий PDF‑документ, додати анотацію посилання з дією URI на першій сторінці, зберегти у потік і перезавантажити, щоб перевірити, що анотація зберігається.
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
Статичний метод Document.Open приймає byte[] або потік. doc.Pages[1] отримує першу сторінку за індексом, що починається з 1 — та сама конвенція індексації, що використовується у всій бібліотеці. Після збереження у MemoryStream документ можна перезавантажити, і всі анотації будуть збережені.
Пошук тексту на сторінці
TextFragmentAbsorber забезпечує пошук за ключовим словом у потоці вмісту будь‑якої сторінки. Передайте пошукову фразу конструктору, щоб обмежити результати, або використайте перевантаження без аргументів, щоб зібрати всі фрагменти:
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}");
}
Кожен TextFragment у отриманій колекції надає властивості, включаючи Text, FontSize та дані про позицію, що робить простим створення робочих процесів пошуку, підсвічування або редагування на основі витягнутих фрагментів.
Ліцензія MIT та Відкрита розробка
Весь вихідний код опубліковано на GitHub і розповсюджується під MIT License. Немає водяного знака оцінки, немає обмеження використання та окремого файлу ліцензії для керування. Властивість Document.IsLicensed завжди повертає true у збірці FOSS.
Пакет наразі має версію 0.1.0-alpha, що відображає активну розробку. Поверхня API вже є значною — 805 класів, 7 488 заявок — і позначка alpha сигналізує, що підписи API можуть змінюватися до випуску 1.0.