Kern‑PDF‑documentbeheer omvat de bewerkingen die in bijna elke PDF‑workflow voorkomen: een document openen of maken, pagina’s en hun inhoud benaderen, annotaties lezen en schrijven, tekst extraheren en werken met interactieve acties. Aspose.PDF FOSS for .NET biedt een .NET 8+ API die al deze taken afhandelt via een consistent objectmodel gecentreerd rond de Document en Page types.

Documentlevenscyclus: Maken, Openen, Opslaan

Elke workflow begint met het maken van een nieuw document of het laden van een bestaand document. Document.Create() retourneert een nieuwe, lege Document instantie. Document.Open(data) accepteert een byte[] of Stream en parseert de PDF-structuur:

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

Dit fragment opent een minimale PDF, voegt een linkannotatie toe aan pagina 1, slaat op naar een MemoryStream, en controleert of de annotatie behouden blijft na het opnieuw laden. De Document.Save(Stream) overload schrijft de volledige bijgewerkte structuur; Document.ToArray() retourneert de bytes direct.


Pagina-toegang en de Pagina’s collectie

Pagina’s worden benaderd via de Pages eigenschap met een 1-gebaseerde gehele index: doc.Pages[1] geeft de eerste pagina terug, doc.Pages[doc.Pages.Count] geeft de laatste terug. Elk Page object biedt:

  • Annotations — de AnnotationCollection voor die pagina, met ondersteuning voor AddLinkAnnotation en opsomming van bestaande annotaties per type.
  • Content stream operators — low-level toegang tot paginatekenopdrachten via de Operators collectie.

De 1‑gebaseerde index is consistent door de hele API: annotatie‑opzoekacties, GoTo‑actiedestinatie‑pagina‑indices, en alle andere paginareferenties gebruiken dezelfde conventie.


Tekstextractie met TextFragmentAbsorber

TextFragmentAbsorber is de standaard toegangspunt voor het lezen van tekst van een PDF-pagina. Gebruik de constructor zonder argumenten om alle fragmenten te extraheren, of geef een zoekterm door om te filteren op overeenkomende 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}");
}

Roep absorber.Visit(page) aan om een enkele pagina te verwerken. De resulterende TextFragments-collectie bevat TextFragment objecten; elk exposeert Text (de tekenreeksinhoud) en FontSize (de gerenderde puntgrootte). Een tweede overload TextFragmentAbsorber(searchPhrase, isRegex) accepteert een reguliere-expressievlag voor patroongebaseerd zoeken.


Interactieve acties

PdfAction is de factory‑klasse voor alle standaard PDF‑actietypen. Vier statische factory‑methoden dekken de meest voorkomende gevallen:

  • PdfAction.CreateUri(uri) — opent een URL in de browser van de gebruiker.
  • PdfAction.CreateGoTo(pageIndex, fitType) — navigeert naar een specifieke pagina binnen het document.
  • PdfAction.CreateJavaScript(script) — voert een JavaScript‑string uit in de PDF‑viewer.
  • PdfAction.CreateLaunch(filePath) — start een extern bestand of applicatie.

Acties worden aan pagina’s gekoppeld via annotaties. AnnotationCollection.AddLinkAnnotation(rectangle, action) plaatst een LinkAnnotation over het opgegeven rechthoekige gebied met de opgegeven actie eraan gekoppeld:

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 bevestigt dat de annotatie is aangemaakt als een linktype. De Rectangle constructor neemt de coördinaten links, onder, rechts en boven in PDF‑gebruikersruimte‑eenheden.


Documentmetadata en licenties

De Document klasse exposeert IsLicensed (geeft true terug in de FOSS‑build), JavaScript (een JavaScriptCollection voor scripts op documentniveau), en DocumentActions voor levenscyclusgebeurtenissen zoals BeforeClosing en BeforeSaving.

Het FOSS‑pakket wordt geïnstalleerd via NuGet:

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

Geen licentiesleutel is vereist. De MIT‑licentie staat gebruik in commerciële toepassingen toe zonder attributievereisten, behalve het behouden van de licentieverklaring.


Aan de slag

Gerelateerde bronnen