Jak pracovat s Core Document Management v .NET

Jak pracovat s Core Document Management v .NET

Aspose.PDF FOSS pro .NET poskytuje třídu Document jako centrální vstupní bod pro všechny operace s PDF. Nainstalujte balíček pomocí dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha a použijte Document.Create(), Document.Open(), Document.Save() a Document.Merge() k programovému řízení PDF dokumentů na .NET 8+.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

Přidejte Aspose.PDF FOSS do svého projektu:

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

Ověřte odkaz ve vašem .csproj:

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

Krok 2: Importovat požadované třídy

Přidejte potřebné using direktivy na začátek souboru:

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

Krok 3: Vytvořit nový PDF dokument

Použijte Document.Create() k vytvoření prázdného dokumentu v paměti:

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

Krok 4: Otevřít existující PDF

Document.Open přijímá pole bajtů, cestu k souboru nebo stream. Použijte using k zajištění, že dokument bude po použití uvolněn:

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

Krok 5: Přístup k stránkám

Vlastnost Document.Pages vrací PageCollection. Stránky jsou indexovány 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;

Krok 6: Uložit Document

Uložte do proudu pomocí Document.Save(), nebo serializujte do pole bajtů pomocí 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();

Krok 7: Sloučit více dokumentů

Použijte Document.Merge() k sloučení více instancí Document do jedné:

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 ekvivalentní přetížení, které přijímá pole cest k souborům přímo.

Běžné problémy a opravy

Kolekce stránek je prázdná po Document.Create()
Document.Create() vrací dokument bez stránek. Musíte explicitně přidat stránku před přístupem k doc.Pages[1]. Pokus o přístup k indexu, který neexistuje, vyvolá IndexOutOfRangeException.

InvalidOperationException při volání Document.Open na poškozeném souboru
Pokud je pole bajtů PDF nebo soubor zkrácený nebo neplatný, Document.Open vyhodí výjimku. Ověřte, že zdrojové pole bajtů je kompletní PDF (začíná %PDF-) předtím, než jej předáte Open.

Dokument není uvolněn — únik paměti ve scénářích s vysokou propustností
Vždy zabalte volání Document.Open a Document.Create do výrazu using. Třída Document implementuje IDisposable; pokud ji neuvolníte, způsobí to, že podkladový stream a tabulka křížových odkazů zůstanou v paměti.

Save(ms) po resetování ms.Position není
Při čtení zpět z MemoryStream po doc.Save(ms) resetujte ms.Position = 0 před čtením. Vynechání tohoto kroku způsobí, že čtečka narazí na prázdný nebo částečný PDF.

Merge vytváří dokument s neočekávaným počtem stránek
Ujistěte se, že všechny zdrojové dokumenty jsou plně načteny před jejich předáním do Document.Merge. Uvolnění zdrojového dokumentu před voláním merge může vést k neúplnému stromu stránek.

Často kladené otázky

Mohu otevřít PDF chráněné heslem?

Ano. Použijte Document.Open(data, password) nebo Document.Open(path, password) k zadání hesla vlastníka nebo uživatele jako druhý argument.

Liší se Document.ToArray() od ukládání do MemoryStream?

Document.ToArray() je pohodlná metoda, která interně ukládá do MemoryStream a vrací výsledné pole bajtů. Obě cesty produkují identický výstup PDF.

Jaký je typ vlastnosti Pages?

Document.Pages je typu PageCollection. Je indexováno od 1; doc.Pages[1] je první stránka.

Mohu dokument uložit vícekrát?

Ano. Můžete zavolat doc.Save() nebo doc.ToArray() vícekrát na stejné instanci dokumentu. Každé volání serializuje aktuální stav dokumentu.

Jak zjistit, zda je dokument licencován?

Document.IsLicensed vrací bool indikující interní stav licencování. Pro Aspose.PDF FOSS je to pouze informativní — není vyžadována žádná aktivace.

Viz také

 Čeština