Slik jobber du med Core Document Management i .NET
Aspose.PDF FOSS for .NET gir Document-klassen som det sentrale inngangspunktet for alle PDF‑operasjoner. Installer pakken med dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha og bruk Document.Create(), Document.Open(), Document.Save() og Document.Merge() for å administrere PDF‑dokumenter programmatisk på .NET 8+.
Steg-for-steg guide
Steg 1: Installer pakken
Legg til Aspose.PDF FOSS i prosjektet ditt:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaBekreft referansen i din .csproj:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />Trinn 2: Importer nødvendige klasser
Legg til de nødvendige using‑direktivene øverst i filen:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;Steg 3: Opprett et nytt PDF-dokument
Bruk Document.Create() for å lage et tomt dokument i minnet:
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();Steg 4: Åpne en eksisterende PDF
Document.Open godtar en byte‑array, filsti eller strøm. Bruk using for å sikre at dokumentet blir frigjort etter bruk:
// 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);Steg 5: Åpne sider
Document.Pages-egenskapen returnerer en PageCollection. Sider er 1‑indeksert:
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;Steg 6: Lagre et dokument
Lagre til en strøm med Document.Save(), eller serialiser til en byte‑array med 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();Steg 7: Slå sammen flere dokumenter
Bruk Document.Merge() for å kombinere flere Document‑instanser til é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() er en tilsvarende overbelastning som godtar filstisarrayer direkte.
Vanlige problemer og løsninger
Sidekolleksjonen er tom etter Document.Create()Document.Create() returnerer et dokument uten sider. Du må eksplisitt legge til en side før du får tilgang til doc.Pages[1]. Forsøk på å få tilgang til et indeks som ikke finnes kaster en IndexOutOfRangeException.
InvalidOperationException ved kall til Document.Open på en korrupt fil
Hvis PDF-bytearrayen eller filen er avkortet eller ugyldig, Document.Open vil kaste. Valider at kilde-bytearrayen er en komplett PDF (starter med %PDF-) før du sender den til Open.
Document not disposed — memory leak in high-throughput scenarios
Alltid pakk inn Document.Open og Document.Create‑kall i en using‑setning. Klassen Document implementerer IDisposable; å unnlate å frigjøre den gjør at den underliggende strømmen og kryssreferansetabellen forblir i minnet.
Save(ms) after ms.Position is not reset
Når du leser tilbake fra en MemoryStream etter doc.Save(ms), tilbakestill ms.Position = 0 før lesing. Å utelate dette trinnet får leseren til å støte på en tom eller delvis PDF.
Sammenslåing produserer et dokument med uventet sideantall
Sørg for at alle kildedokumenter er fullstendig lastet inn før de sendes til Document.Merge. Å disponere et kildedokument før sammenslåingskallet kan føre til et ufullstendig sidetre.
Ofte stilte spørsmål
Kan jeg åpne en passordbeskyttet PDF?
Ja. Bruk Document.Open(data, password) eller Document.Open(path, password) for å oppgi eier‑ eller brukerpassordet som det andre argumentet.
Skiller Document.ToArray() seg fra å lagre til en MemoryStream?
Document.ToArray() er en praktisk metode som internt lagrer til en MemoryStream og returnerer den resulterende byte‑arrayen. Begge veier gir identisk PDF‑utdata.
Hva er typen til Pages‑egenskapen?
Document.Pages er av typen PageCollection. Den er 1‑indeksert; doc.Pages[1] er den første siden.
Kan jeg lagre et dokument flere ganger?
Ja. Du kan kalle doc.Save() eller doc.ToArray() flere ganger på samme dokumentinstans. Hvert kall serialiserer den nåværende tilstanden til dokumentet.
Hvordan sjekker jeg om et dokument er lisensiert?
Document.IsLicensed returnerer en bool som indikerer den interne lisensieringsstatusen. For Aspose.PDF FOSS er dette kun informativt — ingen aktivering kreves.