Com treballar amb la Gestió de documents Core a .NET

Com treballar amb la Gestió de documents Core a .NET

Aspose.PDF FOSS per a .NET proporciona la classe Document com a punt d’entrada central per a totes les operacions PDF. Instal·leu el paquet amb dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha i utilitzeu Document.Create(), Document.Open(), Document.Save() i Document.Merge() per gestionar documents PDF de manera programàtica a .NET 8+.

Guia pas a pas

Pas 1: Instal·la el paquet

Afegeix Aspose.PDF FOSS al teu projecte:

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

Verifiqueu la referència al vostre .csproj:

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

Pas 2: Importa les classes necessàries

Afegeix les directives using necessàries a la part superior del teu fitxer:

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

Pas 3: Crea un nou document PDF

Utilitzeu Document.Create() per crear un document buit en memòria:

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

Pas 4: Obre un PDF existent

Document.Open accepta una matriu de bytes, una ruta de fitxer o un flux. Utilitzeu using per assegurar que el document es disposi després de l’ús:

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

Pas 5: Accedir a les pàgines

La propietat Document.Pages retorna un PageCollection. Les pàgines són indexades a partir de 1:

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;

Pas 6: Desa un Document

Desa a un flux amb Document.Save(), o serialitza a una matriu de bytes amb 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();

Pas 7: Fusiona diversos documents

Utilitzeu Document.Merge() per combinar diverses instàncies de Document en una:

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() és una sobrecàrrega equivalent que accepta matrius de rutes de fitxer directament.

Problemes comuns i solucions

La col·lecció de pàgines està buida després de Document.Create()
Document.Create() retorna un document sense pàgines. Heu d’afegir explícitament una pàgina abans d’accedir a doc.Pages[1]. Intentar accedir a un índex que no existeix llança un IndexOutOfRangeException.

InvalidOperationException en cridar Document.Open en un fitxer corrupte
Si la matriu de bytes PDF o el fitxer està truncat o és invàlid, Document.Open llençarà. Valideu que la matriu de bytes d’origen sigui un PDF complet (comença amb %PDF-) abans de passar-la a Open.

Document no alliberat — fuita de memòria en escenaris d’alt rendiment
Sempre emboliqueu les crides Document.Open i Document.Create en una declaració using. La classe Document implementa IDisposable; no alliberar‑la fa que el flux subjacente i la taula de referències creuades romanguin a la memòria.

Save(ms) després que ms.Position no es restableixi
En llegir de nou des d’un MemoryStream després de doc.Save(ms), restableix ms.Position = 0 abans de llegir. Ometre aquest pas fa que el lector trobi un PDF buit o parcial.

Merge produeix un document amb un recompte de pàgines inesperat
Assegureu-vos que tots els documents d’origen estiguin completament carregats abans de passar-los a Document.Merge. Alliberar un document d’origen abans de la crida de fusió pot provocar un arbre de pàgines incomplet.

Preguntes freqüents

Puc obrir un PDF protegit amb contrasenya?

Sí. Utilitzeu Document.Open(data, password) o Document.Open(path, password) per proporcionar la contrasenya del propietari o de l’usuari com a segon argument.

Document.ToArray() difereix de desar en un MemoryStream?

Document.ToArray() és un mètode de conveniència que internament desa en un MemoryStream i retorna la matriu de bytes resultant. Ambdós camins produeixen una sortida PDF idèntica.

Quin és el tipus de la propietat Pages?

Document.Pages és del tipus PageCollection. És indexat a partir de 1; doc.Pages[1] és la primera pàgina.

Puc desar un document diverses vegades?

Sí. Podeu cridar doc.Save() o doc.ToArray() diverses vegades a la mateixa instància del document. Cada crida serialitza l’estat actual del document.

Com comprovo si un document està llicenciat?

Document.IsLicensed retorna un bool que indica l’estat de llicència intern. Per a Aspose.PDF FOSS això és només informatiu — no es requereix activació.

Vegeu també

 Català