Kärnhantering av PDF-dokument omfattar de operationer som förekommer i nästan varje PDF‑arbetsflöde: öppna eller skapa ett dokument, åtkomst till sidor och deras innehåll, läsa och skriva annotationer, extrahera text och arbeta med interaktiva åtgärder. Aspose.PDF FOSS for .NET tillhandahåller ett .NET 8+ API som hanterar alla dessa uppgifter genom en konsekvent objektmodell centrerad kring Document och Page typerna.

Dokumentlivscykel: Skapa, Öppna, Spara

Varje arbetsflöde börjar antingen med att skapa ett nytt dokument eller ladda ett befintligt. Document.Create() returnerar en ny, tom Document‑instans. Document.Open(data) accepterar en byte[] eller Stream och analyserar 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

Den här kodsnutten öppnar en minimal PDF, lägger till en länkanotering på sida 1, sparar till en MemoryStream och verifierar att annoteringen bevaras efter omladdning. Document.Save(Stream)‑överladdningen skriver den fullständiga uppdaterade strukturen; Document.ToArray() returnerar bytes direkt.


Sidåtkomst och sidssamlingen

Sidor nås via egenskapen Pages med ett 1‑baserat heltalsindex: doc.Pages[1] returnerar den första sidan, doc.Pages[doc.Pages.Count] returnerar den sista. Varje Page‑objekt exponerar:

  • AnnotationsAnnotationCollection för den sidan, med stöd för AddLinkAnnotation och uppräkning av befintliga annotationer efter typ.
  • Content stream operators — låg nivå‑åtkomst till sidritningskommandon via Operators-samlingen.

Det 1‑baserade indexet är konsekvent genom hela API:et: annoteringsuppslag, GoTo‑åtgärdens destinationssidindex och alla andra sidreferenser använder samma konvention.


Textutdrag med TextFragmentAbsorber

TextFragmentAbsorber är standardingångspunkten för att läsa text från en PDF‑sida. Använd den argumentlösa konstruktorn för att extrahera alla fragment, eller skicka en sökfras för att filtrera till matchande text:

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}");
}

Anropa absorber.Visit(page) för att bearbeta en enda sida. Den resulterande TextFragments‑samlingen innehåller TextFragment objekt; var och en exponerar Text (stränginnehållet) och FontSize (den renderade punktstorleken). En andra överlagring TextFragmentAbsorber(searchPhrase, isRegex) accepterar en reguljäruttrycksflagga för mönsterbaserad sökning.


Interaktiva åtgärder

PdfAction är fabriksklassen för alla standard PDF‑åtgärdstyper. Fyra statiska fabrikmetoder täcker de vanligaste fallen:

  • PdfAction.CreateUri(uri) — öppnar en URL i användarens webbläsare.
  • PdfAction.CreateGoTo(pageIndex, fitType) — navigerar till en specifik sida i dokumentet.
  • PdfAction.CreateJavaScript(script) — kör en JavaScript‑sträng i PDF‑visaren.
  • PdfAction.CreateLaunch(filePath) — startar en extern fil eller applikation.

Åtgärder fästs på sidor via annotationer. AnnotationCollection.AddLinkAnnotation(rectangle, action) placerar en LinkAnnotation över det angivna rektangulära området med den angivna åtgärden bifogad:

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 bekräftar att annoteringen skapades som en länktyp. Konstruktorn Rectangle tar emot vänster, botten, höger och toppkoordinater i PDF‑användarrymdens enheter.


Dokumentmetadata och licensiering

Klassen Document exponerar IsLicensed (returnerar true i FOSS‑byggnaden), JavaScript (en JavaScriptCollection för dokumentnivå‑skript) och DocumentActions för livscykelhändelser såsom BeforeClosing och BeforeSaving.

FOSS-paketet installeras via NuGet:

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

Ingen licensnyckel krävs. MIT-licensen tillåter användning i kommersiella applikationer utan krav på attribution utöver att bevara licensmeddelandet.


Komma igång

Relaterade resurser