Cum să lucraţi cu gestionarea de bază a documentelor în .NET

Cum să lucraţi cu gestionarea de bază a documentelor în .NET

Aspose.PDF FOSS pentru .NET oferă clasa Document ca punctul central de intrare pentru toate operațiunile PDF. Instalați pachetul cu dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha și folosiți Document.Create(), Document.Open(), Document.Save() și Document.Merge() pentru a gestiona documentele PDF programatic pe .NET 8+.

Ghid pas cu pas

Pasul 1: Instalaţi pachetul

Adăugați Aspose.PDF FOSS în proiectul dvs.:

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

Verificați referința în .csproj:

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

Pasul 2: Importați clasele necesare

Adăugați directivele using necesare în partea de sus a fișierului:

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

Pasul 3: Crează un document PDF nou

Folosiți Document.Create() pentru a produce un document gol în memorie:

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

Pasul 4: Deschide un PDF existent

Document.Open acceptă un tablou de octeţi, o cale de fişier sau un flux. Utilizaţi using pentru a vă asigura că documentul este eliberat după utilizare:

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

Pasul 5: Accesare pagini

Proprietatea Document.Pages returnează un PageCollection. Paginile sunt indexate de la 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;

Pasul 6: Salvează un document

Salvați într-un flux cu Document.Save(), sau serializați într-un tablou de octeți cu 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();

Pasul 7: Îmbină mai multe documente

Utilizați Document.Merge() pentru a combina mai multe instanțe Document într-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() este o suprasarcină echivalentă care acceptă direct matrici de căi de fișiere.

Probleme comune și remedii

Colecția de pagini este goală după Document.Create()
Document.Create() returnează un document fără pagini. Trebuie să adăugați explicit o pagină înainte de a accesa doc.Pages[1]. Încercarea de a accesa un index care nu există aruncă un IndexOutOfRangeException.

InvalidOperationException la apelarea Document.Open pe un fișier corupt
Dacă vectorul de octeți PDF sau fișierul este trunchiat sau invalid, Document.Open va arunca. Validați că vectorul de octeți sursă este un PDF complet (începe cu %PDF-) înainte de a-l transmite către Open.

Documentul nu este eliberat — scurgere de memorie în scenarii cu debit mare
Întotdeauna învelește apelurile Document.Open și Document.Create într-o instrucțiune using. Clasa Document implementează IDisposable; neeliberarea acesteia cauzează ca fluxul de bază și tabelul de referință încrucișată să rămână în memorie.

Save(ms) after ms.Position is not reset
Când se citește înapoi dintr-un MemoryStream după doc.Save(ms), resetați ms.Position = 0 înainte de citire. Omiterea acestui pas face ca cititorul să întâlnească un PDF gol sau parțial.

Îmbinarea produce un document cu un număr de pagini neașteptat
Asigurați-vă că toate documentele sursă sunt încărcate complet înainte de a le transmite către Document.Merge. Eliminarea unui document sursă înainte de apelul de îmbinare poate duce la un arbore de pagini incomplet.

Întrebări frecvente

Pot să deschid un PDF protejat prin parolă?

Da. Folosiți Document.Open(data, password) sau Document.Open(path, password) pentru a furniza parola de proprietar sau de utilizator ca al doilea argument.

Document.ToArray() diferă de salvarea într-un MemoryStream?

Document.ToArray() este o metodă convenabilă care salvează intern într-un MemoryStream și returnează șirul de octeți rezultat. Ambele căi produc o ieșire PDF identică.

Care este tipul proprietății Pages?

Document.Pages este de tip PageCollection. Este indexat de la 1; doc.Pages[1] este prima pagină.

Pot salva un document de mai multe ori?

Da. Puteți apela doc.Save() sau doc.ToArray() de mai multe ori pe aceeași instanță de document. Fiecare apel serializează starea curentă a documentului.

Cum verific dacă un document este licențiat?

Document.IsLicensed returnează un bool care indică starea internă a licenței. Pentru Aspose.PDF FOSS aceasta este doar informativă — nu este necesară activarea.

Vezi și

 Română