Kjerne‑PDF‑dokumenthåndtering dekker operasjonene som forekommer i nesten alle PDF‑arbeidsflyter: åpning eller opprettelse av et dokument, tilgang til sider og deres innhold, lesing og skriving av annotasjoner, uttrekking av tekst, og arbeid med interaktive handlinger. Aspose.PDF FOSS for .NET gir et .NET 8+ API som håndterer alle disse oppgavene gjennom en konsistent objektmodell sentrert rundt Document og Page‑typene.

Dokumentlivssyklus: Opprett, Åpne, Lagre

Hver arbeidsflyt starter enten med å opprette et nytt dokument eller laste inn et eksisterende. Document.Create() returnerer en ny, tom Document‑instans. Document.Open(data) godtar en byte[] eller Stream og analyserer PDF‑strukturen:

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

Dette utdraget åpner en minimal PDF, legger til en lenkeannotasjon på side 1, lagrer til en MemoryStream, og verifiserer at annotasjonen er bevart etter gjenlasting. Document.Save(Stream)‑overlastingen skriver den fullstendige oppdaterte strukturen; Document.ToArray() returnerer byte‑ene direkte.


Sideadgang og sidesamlingen

Sider får tilgang via Pages-egenskapen ved hjelp av en 1-basert heltallsindeks: doc.Pages[1] returnerer den første siden, doc.Pages[doc.Pages.Count] returnerer den siste. Hvert Page-objekt eksponerer:

  • Annotations — den AnnotationCollection for den siden, som støtter AddLinkAnnotation og opplisting av eksisterende annotasjoner etter type.
  • Content stream operators — lavnivåtilgang til side‑tegningskommandoer via Operators‑samlingen.

Den 1‑baserte indeksen er konsistent gjennom hele API-et: annotasjonsoppslag, GoTo‑handlingsdestinasjonssideindekser, og alle andre sidereferanser bruker samme konvensjon.


Tekstuttrekk med TextFragmentAbsorber

TextFragmentAbsorber er standard inngangspunkt for å lese tekst fra en PDF-side. Bruk konstruktøren uten argumenter for å hente alle fragmenter, eller send inn en søkefrase for å filtrere til matchende 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}");
}

Kall absorber.Visit(page) for å behandle en enkelt side. Den resulterende TextFragments-samlingen inneholder TextFragment objekter; hver eksponerer Text (strenginnholdet) og FontSize (den gjengitte punktstørrelsen). En annen overbelastning TextFragmentAbsorber(searchPhrase, isRegex) godtar et regulært uttrykksflagg for mønsterbasert søk.


Interaktive handlinger

PdfAction er fabrikkklassen for alle standard PDF‑handlingstyper. Fire statiske fabrikkmetoder dekker de mest vanlige tilfellene:

  • PdfAction.CreateUri(uri) — åpner en URL i brukerens nettleser.
  • PdfAction.CreateGoTo(pageIndex, fitType) — navigerer til en spesifikk side i dokumentet.
  • PdfAction.CreateJavaScript(script) — kjører en JavaScript‑streng i PDF‑viseren.
  • PdfAction.CreateLaunch(filePath) — starter en ekstern fil eller applikasjon.

Handlinger er knyttet til sider gjennom annotasjoner. AnnotationCollection.AddLinkAnnotation(rectangle, action) plasserer en LinkAnnotation over det angitte rektangulære området med den gitte handlingen knyttet:

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 bekrefter at annotasjonen ble opprettet som en lenketype. Rectangle-konstruktøren tar venstre, bunn, høyre og topp‑koordinater i PDF‑brukerromsenheter.


Dokumentmetadata og lisensiering

Klassen Document eksponerer IsLicensed (returnerer true i FOSS‑bygget), JavaScript (en JavaScriptCollection for skript på dokumentnivå), og DocumentActions for livssyklus‑hendelser som BeforeClosing og BeforeSaving.

FOSS-pakken installeres via NuGet:

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

Ingen lisensnøkkel kreves. MIT‑lisensen tillater bruk i kommersielle applikasjoner uten krav til attribusjon utover å bevare lisensmerknaden.


Kom i gang

Relaterte ressurser