Hoe te werken met Core Document Management in .NET
Aspose.PDF FOSS for .NET biedt de Document klasse als het centrale toegangspunt voor alle PDF‑bewerkingen. Installeer het pakket met dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha en gebruik Document.Create(), Document.Open(), Document.Save() en Document.Merge() om PDF‑documenten programmatisch te beheren op .NET 8+.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
Voeg Aspose.PDF FOSS toe aan uw project:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaControleer de referentie in uw .csproj:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />Stap 2: Vereiste klassen importeren
Voeg de benodigde using‑directieven toe aan het begin van uw bestand:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;Stap 3: Maak een nieuw PDF-document
Gebruik Document.Create() om een leeg in‑memory document te maken:
using var doc = Document.Create();
// The document has no pages yet; add pages before saving
using var ms = new MemoryStream();
doc.Save(ms);
byte[] pdfBytes = ms.ToArray();Stap 4: Open een bestaande PDF
Document.Open accepteert een byte‑array, bestandspad of stream. Gebruik using om ervoor te zorgen dat het document na gebruik wordt vrijgegeven:
// From a file path
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
// From a byte array loaded elsewhere
byte[] data = File.ReadAllBytes("input.pdf");
using var doc2 = Document.Open(data);Stap 5: Toegang tot pagina’s
De Document.Pages eigenschap retourneert een PageCollection. Pagina’s zijn 1-geïndexeerd:
using var doc = Document.Open("input.pdf");
int pageCount = doc.Pages.Count;
var firstPage = doc.Pages[1];
double width = firstPage.Width;
double height = firstPage.Height;Stap 6: Document opslaan
Opslaan naar een stream met Document.Save(), of serialiseren naar een byte‑array met Document.ToArray():
using var doc = Document.Open("input.pdf");
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com/test");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
byte[] savedBytes = ms.ToArray();Stap 7: Meerdere documenten samenvoegen
Gebruik Document.Merge() om meerdere Document‑instanties te combineren tot één:
using var doc1 = Document.Open("part1.pdf");
using var doc2 = Document.Open("part2.pdf");
var merged = Document.Merge(new[] { doc1, doc2 });
merged.Save("combined.pdf");Document.MergeDocuments() is een equivalente overload die bestandspadarrays direct accepteert.
Veelvoorkomende problemen en oplossingen
Paginascollectie is leeg na Document.Create()Document.Create() retourneert een document zonder pagina’s. U moet expliciet een pagina toevoegen voordat u doc.Pages[1] benadert. Poging om een index die niet bestaat te benaderen, veroorzaakt een IndexOutOfRangeException.
InvalidOperationException bij het aanroepen van Document.Open op een beschadigd bestand
Als de PDF‑byte‑array of het bestand is afgekapt of ongeldig, zal Document.Open een uitzondering werpen. Controleer of de bron‑byte‑array een volledige PDF is (begint met %PDF-) voordat u deze doorgeeft aan Open.
Document niet vrijgegeven — geheugenlek in scenario’s met hoge doorvoer
Altijd Document.Open en Document.Create oproepen in een using statement. De Document klasse implementeert IDisposable; het niet vrijgeven ervan veroorzaakt dat de onderliggende stream en kruisverwijzingstabel in het geheugen blijven.
Save(ms) nadat ms.Position niet is gereset
Bij het teruglezen van een MemoryStream na doc.Save(ms), reset ms.Position = 0 vóór het lezen. Het weglaten van deze stap zorgt ervoor dat de lezer een lege of gedeeltelijke PDF tegenkomt.
Merge produceert een document met een onverwacht aantal pagina’s
Zorg ervoor dat alle bron‑documenten volledig zijn geladen voordat ze worden doorgegeven aan Document.Merge. Het vrijgeven van een bron‑document vóór de merge‑aanroep kan resulteren in een onvolledige paginaboom.
Veelgestelde vragen
Kan ik een wachtwoordbeveiligde PDF openen?
Ja. Gebruik Document.Open(data, password) of Document.Open(path, password) om het eigenaar‑ of gebruikerswachtwoord als tweede argument op te geven.
Verschilt Document.ToArray() van het opslaan naar een MemoryStream?
Document.ToArray() is een handige methode die intern opslaat naar een MemoryStream en de resulterende byte‑array retourneert. Beide paden produceren identieke PDF‑output.
Wat is het type van de Pages‑eigenschap?
Document.Pages is van het type PageCollection. Het is 1-geïndexeerd; doc.Pages[1] is de eerste pagina.
Kan ik een document meerdere keren opslaan?
Ja. Je kunt doc.Save() of doc.ToArray() meerdere keren aanroepen op dezelfde documentinstantie. Elke oproep serialiseert de huidige staat van het document.
Hoe controleer ik of een document gelicentieerd is?
Document.IsLicensed retourneert een bool die de interne licentiestatus aangeeft. Voor Aspose.PDF FOSS is dit alleen informatief — er is geen activering vereist.