Sådan arbejder du med Core Document Management i .NET

Sådan arbejder du med Core Document Management i .NET

Aspose.PDF FOSS for .NET leverer Document-klassen som det centrale indgangspunkt for alle PDF‑operationer. Installer pakken med dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha og brug Document.Create(), Document.Open(), Document.Save() og Document.Merge() til at håndtere PDF‑dokumenter programmatisk på .NET 8+.

Trin-for-trin guide

Trin 1: Installer pakken

Tilføj Aspose.PDF FOSS til dit projekt:

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

Bekræft referencen i din .csproj:

<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />

Trin 2: Importer nødvendige klasser

Tilføj de nødvendige using‑direktiver øverst i din fil:

using Aspose.Pdf;
using Aspose.Pdf.Annotations;

Trin 3: Opret et nyt PDF-dokument

Brug Document.Create() til at oprette et tomt in-memory-dokument:

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();

Trin 4: Åbn en eksisterende PDF

Document.Open accepterer en byte‑array, filsti eller stream. Brug using for at sikre, at dokumentet bliver frigjort efter brug:

// 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);

Trin 5: Få adgang til sider

Document.Pages-egenskaben returnerer en PageCollection. Sider er 1‑indekserede:

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;

Trin 6: Gem et dokument

Gem til en stream 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();

Trin 7: Flet flere dokumenter

Brug Document.Merge() til at 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 overload, der accepterer filstis‑arrays direkte.

Almindelige problemer og rettelser

Pages collection er tom efter Document.Create()
Document.Create() returnerer et dokument uden sider. Du skal eksplicit tilføje en side, før du får adgang til doc.Pages[1]. Forsøg på at få adgang til et indeks, der ikke findes, kaster en IndexOutOfRangeException.

InvalidOperationException ved kald af Document.Open på en beskadiget fil
Hvis PDF‑bytearrayet eller filen er afkortet eller ugyldig, vil Document.Open kaste. Valider, at kilde‑bytearrayet er en komplet PDF (starter med %PDF-), før du sender det til Open.

Document not disposed — memory leak in high-throughput scenarios
Pak altid Document.Open og Document.Create kald ind i en using erklæring. Klassen Document implementerer IDisposable; hvis den ikke disponeres, forbliver den underliggende strøm og krydsreference‑tabel i hukommelsen.

Save(ms) after ms.Position is not reset
Når du læser tilbage fra en MemoryStream efter doc.Save(ms), nulstil ms.Position = 0 før læsning. Hvis du springer dette trin over, vil læseren støde på en tom eller delvis PDF.

Merge producerer et dokument med uventet sideantal
Sørg for, at alle kilde‑dokumenter er fuldt indlæst, før de videregives til Document.Merge. At frigøre et kilde‑dokument før merge‑kaldet kan resultere i et ufuldstændigt sidetræ.

Ofte stillede spørgsmål

Kan jeg åbne en adgangskodebeskyttet PDF?

Ja. Brug Document.Open(data, password) eller Document.Open(path, password) til at angive ejer- eller brugeradgangskoden som det andet argument.

Er Document.ToArray() anderledes end at gemme til en MemoryStream?

Document.ToArray() er en bekvem metode, der internt gemmer til en MemoryStream og returnerer den resulterende byte‑array. Begge veje producerer identisk PDF‑output.

Hvad er typen af Pages‑egenskaben?

Document.Pages er af typen PageCollection. Den er 1‑indekseret; doc.Pages[1] er den første side.

Kan jeg gemme et dokument flere gange?

Ja. Du kan kalde doc.Save() eller doc.ToArray() flere gange på den samme dokumentinstans. Hvert kald serialiserer den aktuelle tilstand af dokumentet.

Hvordan kan jeg kontrollere, om et dokument er licenseret?

Document.IsLicensed returnerer en bool, der angiver den interne licensstatus. For Aspose.PDF FOSS er dette kun informativt — ingen aktivering er påkrævet.

Se også

 Dansk