Podstawowe zarządzanie dokumentami PDF obejmuje operacje, które pojawiają się w prawie każdym przepływie pracy PDF: otwieranie lub tworzenie dokumentu, dostęp do stron i ich zawartości, odczytywanie i zapisywanie adnotacji, wyodrębnianie tekstu oraz pracę z interaktywnymi akcjami. Aspose.PDF FOSS for .NET udostępnia interfejs API .NET 8+, który obsługuje wszystkie te zadania poprzez spójny model obiektowy skoncentrowany wokół typów Document i Page.
Cykl życia dokumentu: Utwórz, Otwórz, Zapisz
Każdy przepływ pracy zaczyna się od utworzenia nowego dokumentu lub załadowania istniejącego. Document.Create() zwraca nową, pustą Document instancję. Document.Open(data) przyjmuje byte[] lub Stream i analizuje strukturę 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
Ten fragment otwiera minimalny PDF, dodaje adnotację linku do strony 1, zapisuje do MemoryStream i weryfikuje, że adnotacja jest zachowana po ponownym załadowaniu. Przeciążenie Document.Save(Stream) zapisuje pełną zaktualizowaną strukturę; Document.ToArray() zwraca bajty bezpośrednio.
Dostęp do stron i kolekcja stron
Strony są dostępne poprzez właściwość Pages przy użyciu indeksu całkowitego zaczynającego się od 1: doc.Pages[1] zwraca pierwszą stronę, doc.Pages[doc.Pages.Count] zwraca ostatnią. Każdy obiekt Page udostępnia:
Annotations—AnnotationCollectiondla tej strony, obsługującyAddLinkAnnotationi wyliczanie istniejących adnotacji według typu.- Operatory strumienia zawartości — niskopoziomowy dostęp do poleceń rysowania strony za pośrednictwem kolekcji
Operators.
Indeks 1‑bazowy jest spójny w całym API: wyszukiwania adnotacji, indeksy stron docelowych akcji GoTo oraz wszystkie inne odwołania do stron używają tej samej konwencji.
Ekstrakcja tekstu przy użyciu TextFragmentAbsorber
TextFragmentAbsorber jest standardowym punktem wejścia do odczytywania tekstu z strony PDF. Użyj konstruktora bezargumentowego, aby wyodrębnić wszystkie fragmenty, lub przekaż frazę wyszukiwania, aby odfiltrować pasujący tekst:
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}");
}
Wywołaj absorber.Visit(page), aby przetworzyć pojedynczą stronę. Powstała kolekcja TextFragments zawiera TextFragment obiektów; każdy udostępnia Text (zawartość jako ciąg znaków) oraz FontSize (rozmiar punktowy po renderowaniu). Drugi przeciążony TextFragmentAbsorber(searchPhrase, isRegex) przyjmuje flagę wyrażenia regularnego do wyszukiwania opartego na wzorcu.
Interaktywne działania
PdfAction jest klasą fabryczną dla wszystkich standardowych typów akcji PDF. Cztery statyczne metody fabryczne obejmują najczęstsze przypadki:
PdfAction.CreateUri(uri)— otwiera adres URL w przeglądarce użytkownika.PdfAction.CreateGoTo(pageIndex, fitType)— przechodzi do określonej strony w dokumencie.PdfAction.CreateJavaScript(script)— wykonuje ciąg JavaScript w przeglądarce PDF.PdfAction.CreateLaunch(filePath)— uruchamia zewnętrzny plik lub aplikację.
Akcje są dołączane do stron za pomocą adnotacji. AnnotationCollection.AddLinkAnnotation(rectangle, action) umieszcza LinkAnnotation nad określonym prostokątnym obszarem z podłączoną akcją:
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 potwierdza, że adnotacja została utworzona jako typ linku. Konstruktor Rectangle przyjmuje współrzędne left, bottom, right i top w jednostkach przestrzeni użytkownika PDF.
Metadane dokumentu i licencjonowanie
Klasa Document udostępnia IsLicensed (zwraca true w wersji FOSS), JavaScript (JavaScriptCollection dla skryptów na poziomie dokumentu) oraz DocumentActions dla zdarzeń cyklu życia, takich jak BeforeClosing i BeforeSaving.
Pakiet FOSS jest instalowany za pomocą NuGet:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
Klucz licencyjny nie jest wymagany. Licencja MIT zezwala na użycie w aplikacjach komercyjnych bez wymagań dotyczących atrybucji, poza zachowaniem informacji o licencji.