Kuinka työskennellä Core Document Managementin kanssa .NETissä
Aspose.PDF FOSS for .NET tarjoaa Document-luokan keskeisenä sisäänkäyntinä kaikkiin PDF-toimintoihin. Asenna paketti dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha ja käytä Document.Create(), Document.Open(), Document.Save() ja Document.Merge() PDF-dokumenttien hallintaan ohjelmallisesti .NET 8+:ssa.
Vaiheittainen opas
Vaihe 1: Asenna paketti
Lisää Aspose.PDF FOSS projektiisi:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaVahvista viite .csproj:ssäsi:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />Vaihe 2: Tuo vaaditut luokat
Lisää tarvittavat using‑direktiivit tiedostosi alkuun:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;Vaihe 3: Luo uusi PDF-asiakirja
Käytä Document.Create() luodaksesi tyhjän muistissa olevan asiakirjan:
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();Vaihe 4: Avaa olemassa oleva PDF
Document.Open hyväksyy tavutaulukon, tiedostopolun tai virtauksen. Käytä using varmistaaksesi, että asiakirja vapautetaan käytön jälkeen:
// 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);Vaihe 5: Sivujen käyttö
Document.Pages-ominaisuus palauttaa PageCollection. Sivut ovat 1‑indeksoituja:
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;Vaihe 6: Tallenna asiakirja
Tallenna virtaan käyttäen Document.Save(), tai sarjoita tavutaulukkoon käyttäen 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();Vaihe 7: Yhdistä useita asiakirjoja
Käytä Document.Merge() yhdistääksesi useita Document-instansseja yhdeksi:
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() on vastaava ylikuormitus, joka hyväksyy tiedostopolkujen taulukot suoraan.
Yleisiä ongelmia ja korjauksia
Sivukokoelma on tyhjä Document.Create()-kutsun jälkeenDocument.Create() palauttaa asiakirjan ilman sivuja. Sinun on lisättävä sivu eksplisiittisesti ennen kuin käytät doc.Pages[1]. Yritys käyttää indeksiä, jota ei ole, heittää IndexOutOfRangeException.
InvalidOperationException kun kutsutaan Document.Open vioittuneessa tiedostossa
Jos PDF‑tavutaulukko tai tiedosto on katkaistu tai virheellinen, Document.Open heittää. Varmista, että lähdetavutaulukko on täydellinen PDF (alkaa %PDF-) ennen kuin annat sen Open.
Asiakirjaa ei vapautettu — muistin vuoto suuritehoisissa tilanteissa
Kääri aina Document.Open- ja Document.Create-kutsut using-lauseeseen. Document-luokka toteuttaa IDisposable; jos sitä ei vapauteta, taustavirta ja ristiviitettaulukko pysyvät muistissa.
Save(ms) after ms.Position is not reset
Kun luetaan takaisin MemoryStream:stä doc.Save(ms):n jälkeen, nollaa ms.Position = 0 ennen lukemista. Tämän vaiheen jättämättä jättäminen saa lukijan kohtaamaan tyhjän tai osittaisen PDF:n.
Merge tuottaa asiakirjan odottamattomalla sivumäärällä
Varmista, että kaikki lähdeasiakirjat on täysin ladattu ennen kuin ne välitetään Document.Merge:lle. Lähdeasiakirjan vapauttaminen ennen merge-kutsua voi johtaa epätäydelliseen sivupuun.
Usein kysytyt kysymykset
Voinko avata salasanalla suojatun PDF:n?
Kyllä. Käytä Document.Open(data, password) tai Document.Open(path, password) antamaan omistajan tai käyttäjän salasana toisena argumenttina.
Eroaako Document.ToArray() tallentamisesta MemoryStreamiin?
Document.ToArray() on kätevä menetelmä, joka sisäisesti tallentaa MemoryStream:een ja palauttaa syntyneen tavutaulukon. Molemmat polut tuottavat identtisen PDF-tulosteen.
Mikä on Pages-ominaisuuden tyyppi?
Document.Pages on tyyppiä PageCollection. Se on 1‑indeksoitu; doc.Pages[1] on ensimmäinen sivu.
Voinko tallentaa asiakirjan useita kertoja?
Kyllä. Voit kutsua doc.Save() tai doc.ToArray() useita kertoja samassa asiakirja‑instanssissa. Jokainen kutsu sarjoittaa asiakirjan nykyisen tilan.
Kuinka tarkistan, onko asiakirja lisensoitu?
Document.IsLicensed palauttaa bool, joka ilmaisee sisäisen lisensointitilan. Aspose.PDF FOSS:lle tämä on vain tiedotuksellinen — aktivointia ei tarvita.