Aspose.PDF FOSS for .NET is een gratis, MIT-gelicentieerde .NET-bibliotheek voor het lezen, maken en manipuleren van PDF‑documenten. Uitgebracht onder een permissieve open‑source licentie, verwijdert het de traditionele barrière voor enterprise‑grade PDF‑mogelijkheden — elke functie in de bibliotheek is beschikbaar zonder een commerciële licentie aan te schaffen.
Wat is Aspose.PDF FOSS voor .NET?
De bibliotheek richt zich op .NET 8 en hoger. Hij wordt gepubliceerd op NuGet onder de pakket‑ID Aspose.Pdf.Foss en kan aan elk .NET 8+ project worden toegevoegd met één opdracht:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
De primaire namespace is Aspose.Pdf, met gerelateerde namespaces waaronder Aspose.Pdf.Text, Aspose.Pdf.Forms en Aspose.Pdf.Facades. De bibliotheek biedt 805 openbare API‑klassen, ondersteund door 7,488 gedocumenteerde claims en 100 codefragmenten die rechtstreeks uit de testsuite zijn gehaald.
Kernfunctionaliteiten
De API dekt de volledige levenscyclus van een PDF‑document:
- Documentcreatie en laden —
Document.Create()maakt een leeg document;Document.Open(data)laadt een bestaande PDF vanuit een byte‑array of stream. - Pagina- en inhoudstoegang — de
Pages‑collectie biedt 1‑gebaseerde geïndexeerde toegang tot individuele pagina’s, waarbij elke pagina annotaties, operatoren en inhoudsstromen blootlegt. - Tekstextractie —
TextFragmentAbsorberbezoekt een pagina en verzamelt elk tekstfragment, met optionele filteren op zoekzinnen en ondersteuning voor reguliere expressies. - Interactieve acties —
PdfAction.CreateUri,PdfAction.CreateGoTo,PdfAction.CreateJavaScriptenPdfAction.CreateLaunchbehandelen de standaard PDF‑actietypen. - Annotaties —
AnnotationCollection.AddLinkAnnotationvoegt een linkannotatie met een bijbehorende actie toe aan elk rechthoekig gebied op een pagina. - Formulieren — de
Aspose.Pdf.Forms‑namespace enAspose.Pdf.Facadesbieden toegang tot AcroForm‑velden, weergave‑opmaak en veld‑specifieke JavaScript‑extensies.
Een document openen en een koppeling toevoegen
Het volgende voorbeeld toont het round‑trip‑patroon: maak een nieuw PDF‑document, voeg een URI‑actie‑linkannotatie toe aan de eerste pagina, sla op naar een stream en laad opnieuw om te verifiëren dat de annotatie behouden blijft.
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
De Document.Open statische methode accepteert een byte[] of een stream. doc.Pages[1] benadert de eerste pagina via een 1‑gebaseerde index — dezelfde indexconventie die door de hele bibliotheek wordt gebruikt. Na het opslaan naar een MemoryStream kan het document opnieuw worden geladen en blijven alle annotaties behouden.
Zoeken naar tekst op een pagina
TextFragmentAbsorber biedt trefwoord zoeken over de contentstream van elke pagina. Geef een zoekzin door aan de constructor om de resultaten te beperken, of gebruik de overload zonder argumenten om alle fragmenten te verzamelen:
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}");
}
Elke TextFragment in de resulterende collectie exposeert eigenschappen, waaronder Text, FontSize en positionele gegevens, waardoor het eenvoudig is om zoek‑, markeer‑ of redactieworkflows bovenop de geëxtraheerde fragmenten te bouwen.
MIT-licentie en open ontwikkeling
Alle broncode wordt gepubliceerd op GitHub en gedistribueerd onder de MIT-licentie. Er is geen evaluatiewatermerk, geen gebruikslimiet en geen apart licentiebestand om te beheren. De Document.IsLicensed-eigenschap geeft altijd true terug in de FOSS-build.
Het pakket bevindt zich momenteel op versie 0.1.0-alpha, wat actieve ontwikkeling weerspiegelt. Het API-oppervlak is al aanzienlijk — 805 klassen, 7.488 claims — en de alpha‑aanduiding geeft aan dat API‑handtekeningen kunnen evolueren vóór de 1.0‑release.