Kern-PDF-Dokumentenverwaltung umfasst die Vorgänge, die in fast jedem PDF-Workflow auftreten: Öffnen oder Erstellen eines Dokuments, Zugriff auf Seiten und deren Inhalt, Lesen und Schreiben von Anmerkungen, Extrahieren von Text und Arbeiten mit interaktiven Aktionen. Aspose.PDF FOSS for .NET bietet eine .NET 8+ API, die all diese Aufgaben über ein konsistentes Objektmodell abwickelt, das auf den Typen Document und Page zentriert ist.
Dokumentenlebenszyklus: Erstellen, Öffnen, Speichern
Jeder Workflow beginnt entweder mit dem Erstellen eines neuen Dokuments oder dem Laden eines bestehenden. Document.Create() gibt eine neue, leere Document‑Instanz zurück. Document.Open(data) akzeptiert ein byte[] oder Stream und analysiert die PDF‑Struktur:
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
Dieses Snippet öffnet ein minimales PDF, fügt eine Link‑Annotation zu Seite 1 hinzu, speichert in ein MemoryStream und prüft, dass die Annotation nach dem Neuladen erhalten bleibt. Die Document.Save(Stream)‑Überladung schreibt die vollständig aktualisierte Struktur; Document.ToArray() gibt die Bytes direkt zurück.
Seitenzugriff und die Seitenkollektion
Seiten werden über die Pages‑Eigenschaft mit einem 1‑basierten Ganzzahlindex zugegriffen: doc.Pages[1] gibt die erste Seite zurück, doc.Pages[doc.Pages.Count] die letzte. Jedes Page‑Objekt stellt bereit:
Annotations— dasAnnotationCollectionfür diese Seite, unterstütztAddLinkAnnotationund Aufzählung vorhandener Anmerkungen nach Typ.- Content-Stream-Operatoren — Low-Level-Zugriff auf Seitenzeichnungsbefehle über die
Operators-Sammlung.
Der 1-basierte Index ist durchgängig in der API konsistent: Annotation‑Abfragen, GoTo‑Action‑Ziel‑Seitenindizes und alle anderen Seitenreferenzen verwenden dieselbe Konvention.
Textextraktion mit TextFragmentAbsorber
TextFragmentAbsorber ist der standardmäßige Einstiegspunkt zum Lesen von Text aus einer PDF‑Seite. Verwenden Sie den Konstruktor ohne Argumente, um alle Fragmente zu extrahieren, oder übergeben Sie einen Suchbegriff, um auf passenden Text zu filtern:
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}");
}
Rufen Sie absorber.Visit(page) auf, um eine einzelne Seite zu verarbeiten. Die resultierende TextFragments‑Sammlung enthält TextFragment Objekte; jedes stellt Text (den Zeichenketteninhalt) und FontSize (die gerenderte Punktgröße) bereit. Eine zweite Überladung TextFragmentAbsorber(searchPhrase, isRegex) akzeptiert ein reguläres Ausdrucks‑Flag für die musterbasierten Suche.
Interaktive Aktionen
PdfAction ist die Fabrikklasse für alle Standard‑PDF‑Aktionstypen. Vier statische Fabrikmethoden decken die häufigsten Fälle ab:
PdfAction.CreateUri(uri)— öffnet eine URL im Browser des Benutzers.PdfAction.CreateGoTo(pageIndex, fitType)— navigiert zu einer bestimmten Seite im Dokument.PdfAction.CreateJavaScript(script)— führt einen JavaScript‑String im PDF‑Viewer aus.PdfAction.CreateLaunch(filePath)— startet eine externe Datei oder Anwendung.
Aktionen werden über Anmerkungen an Seiten angehängt. AnnotationCollection.AddLinkAnnotation(rectangle, action) platziert ein LinkAnnotation über dem angegebenen rechteckigen Bereich mit der angefügten Aktion:
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 bestätigt, dass die Anmerkung als Link‑Typ erstellt wurde. Der Rectangle‑Konstruktor nimmt linke, untere, rechte und obere Koordinaten in PDF‑Benutzer‑Raum‑Einheiten entgegen.
Dokumentmetadaten und Lizenzierung
Die Document‑Klasse stellt IsLicensed bereit (gibt true im FOSS‑Build zurück), JavaScript (ein JavaScriptCollection für dokumentenbezogene Skripte) und DocumentActions für Lebenszyklusereignisse wie BeforeClosing und BeforeSaving.
Das FOSS-Paket wird über NuGet installiert:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
Kein Lizenzschlüssel ist erforderlich. Die MIT‑Lizenz erlaubt die Nutzung in kommerziellen Anwendungen ohne Namensnennungsanforderungen, abgesehen von der Aufbewahrung des Lizenzhinweises.