Kako raditi sa Core Document Management u .NET

Kako raditi sa Core Document Management u .NET

Aspose.PDF FOSS za .NET pruža klasu Document kao centralnu tačku ulaza za sve PDF operacije. Instalirajte paket pomoću dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha i koristite Document.Create(), Document.Open(), Document.Save() i Document.Merge() za programatsko upravljanje PDF dokumentima na .NET 8+.

Vodič korak po korak

Korak 1: Instalirajte paket

Dodajte Aspose.PDF FOSS u svoj projekat:

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

Proverite referencu u vašem .csproj:

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

Korak 2: Uvezi potrebne klase

Dodajte potrebne using direktive na početak vašeg fajla:

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

Korak 3: Kreirajte novi PDF dokument

Koristite Document.Create() da biste proizveli prazan dokument u memoriji:

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

Korak 4: Otvorite postojeći PDF

Document.Open prihvata niz bajtova, putanju do fajla ili tok. Koristite using da biste osigurali da se dokument oslobodi nakon upotrebe:

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

Korak 5: Pristup stranicama

Svojstvo Document.Pages vraća PageCollection. Stranice su indeksirane od 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;

Korak 6: Sačuvajte dokument

Sačuvajte u tok pomoću Document.Save(), ili serijalizujte u bajt niz pomoću 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();

Korak 7: Spajanje više dokumenata

Koristite Document.Merge() da kombinujete više Document instanci u jednu:

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() je ekvivalentno preopterećenje koje prihvata nizove putanja do datoteka direktno.

Уобичајени проблеми и исправке

Kolekcija stranica je prazna nakon Document.Create()
Document.Create() vraća dokument bez stranica. Morate eksplicitno dodati stranicu pre nego što pristupite doc.Pages[1]. Pokušaj pristupa indeksu koji ne postoji baca IndexOutOfRangeException.

InvalidOperationException prilikom poziva Document.Open na oštećenoj datoteci
Ako je PDF niz bajtova ili datoteka skraćena ili nevažeća, Document.Open će baciti izuzetak. Proverite da li je izvorni niz bajtova kompletan PDF (počinje sa %PDF-) pre nego što ga prosledite Open.

Dokument nije osloboden — curenje memorije u scenarijima visokog protoka
Uvek umotajte Document.Open i Document.Create pozive u using izjavu. Klasa Document implementira IDisposable; neoslobadjanje uzrokuje da osnovni tok i tabela referenci ostanu u memoriji.

Save(ms) nakon što ms.Position nije resetovan
Pri čitanju nazad iz MemoryStream nakon doc.Save(ms), resetujte ms.Position = 0 pre čitanja. Izostavljanje ovog koraka uzrokuje da čitač naiđe na prazan ili delimičan PDF.

Merge proizvodi dokument sa neočekivanim brojem stranica Osigurajte da su svi izvorni dokumenti potpuno učitani pre nego što ih prosledite Document.Merge. Oslobađanje izvornog dokumenta pre poziva spajanja može dovesti do nepotpunog stabla stranica.

Često postavljana pitanja

Могу ли да отворим PDF заштићен лозинком?

Да. Користите Document.Open(data, password) или Document.Open(path, password) да доставите власничку или корисничку лозинку као други аргумент.

Da li se Document.ToArray() razlikuje od čuvanja u MemoryStream?

Document.ToArray() je metoda pogodnosti koja interno čuva u MemoryStream i vraća rezultatni niz bajtova. Obe putanje proizvode identičan PDF izlaz.

Koji je tip svojstva Pages?

Document.Pages je tipa PageCollection. Indeksiran je od 1; doc.Pages[1] je prva stranica.

Mogu li da sačuvam dokument više puta?

Да. Можете позвати doc.Save() или doc.ToArray() више пута на истом примеру документа. Сваки позив серијализује тренутно стање документа.

Kako da proverim da li je dokument licenciran?

Document.IsLicensed vraća bool koji ukazuje na interno stanje licenciranja. Za Aspose.PDF FOSS ovo je samo informativno — aktivacija nije potrebna.

Види такође

 Српски