.NET'te Temel Belge Yönetimi ile Nasıl Çalışılır
Aspose.PDF FOSS for .NET provides the Document sınıf, tüm PDF işlemleri için merkezi giriş noktası olarak. paket yükleme ile dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha ve kullanmak Document.Create(), Document.Open(), Document.Save(),ve Document.Merge() PDF dosyalarını programlı olarak .NET 8+‘da yönetmek.
Adım adım rehberlik
Adım 1: Paket yükleme
Projeye FOSS ekleyin:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaReferansınızı kendi içine kontrol edin. .csproj:
<PackageReference Include="Aspose.Pdf.Foss" Version="0.1.0-alpha" />Adım 2: Gerekli sınıflar ithal etmek
Dosyalarınızın üstünde gerekli yönergeleri kullanarak ekleyin:
using Aspose.Pdf;
using Aspose.Pdf.Annotations;Adım 3: Yeni bir PDF Belge Oluşturun
Kullanım Document.Create() * Hafıza içindeki boş bir belgeyi oluşturmak için:
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();Adım 4: Mevcut bir PDF’yi açın
Document.Open bir byte array, dosya yolu veya akış kabul eder. using Kullanımdan sonra belgeyi kaldırmak için:
// 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);Adım 5: Sayfa erişim
O zamanlar Document.Pages Mülkiyet A’ya geri dönüyor PageCollection.1. Sayfa 1 indekslendirilmelidir:
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;Adım 6: Bir belgeyi kaydetmek
Bir akışa kaydolun Document.Save(),veya bir byte array ile serialize etmek için 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();Adım 7: Çok sayıda belge birleştirin
Kullanım Document.Merge() Birleşmek için çoklu Document Birinde bir örnek:
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() doğrudan dosya yolu aralığı kabul eşdeğer bir aşırı yükleme.
Toplam Sorunlar ve Çözümler
Sayfa toplama Document.Create() sonra boş kalır Document.Create() sayfa olmayan bir belgeyi geri getirir. erişmeden önce açıkça bir sayfayı eklemeniz gerekir. doc.Pages[1].Bir endeksin var olmadığı bir indekse erişmeye çalışmak, bir IndexOutOfRangeException.
InvalidOperationDokument.Açık bir dosyaya çağırdığınızda istisna PDF byte aralığı veya dosya çürümüş veya geçersiz ise, Document.Open kaynağı byte array tam bir PDF olduğunu doğrulayın (bir başlangıç ile %PDF-(b) geçmeden önce Open.
Doküman yok - yüksek performanslı senaryolarda hafıza sızıntısı Her zaman çarpıyor Document.Open ve Document.Create A’da çağrı using Açıklama : The Document Sınıf Uygulamaları IDisposable; çözülemediği için, alt akım ve çapraz referans tablosu hafızada kalmasına neden olur.
MS (MS) pozisyonu yeniden ayarlanmadıkça kaydetme A’dan geri dönüp okuduğunda MemoryStream sonra doc.Save(ms),Reset için ms.Position = 0 Bu adımın kaçırılması, okuyucuya boş veya kısmi bir PDF’ye rastlar.
Merge beklenmedik sayfa sayısı ile bir belge üretir Tüm kaynak belgelerinin, bunları iletmeden önce tam olarak yüklenmesini sağlayın. Document.Merge.Birleşme çağrısının öncesinde bir kaynak belgesi koymak, eksik bir sayfa ağacına yol açabilir.
Sıkça Sorulan Sorular
Şifre korumalı bir PDF açabilir miyim?
Evet Kullanım Document.Open(data, password) veya Document.Open(path, password) 2. Kullanıcı veya kullanıcı şifresini ikinci bir argüman olarak sunmak.
Document.ToArray() bir MemoryStream’a kaydetmekten farklı mı?
Document.ToArray() Bu, içeride bir şekilde kurtarılan bir yöntemdir. MemoryStream ve sonuçlanan byte aralığını geri getirir. her iki yol da aynı PDF çıkışını üretir .
Peki, sayfa mülkiyeti türü nedir?
Document.Pages Tipi olan PageCollection.1. indekslendirilmiş bir durumdur.; doc.Pages[1] Bu ilk sayfa.
Bir belgeyi birkaç kez kaydedebilir miyim?
Evet evet arama yapabilirsiniz doc.Save() veya doc.ToArray() Aynı belge örneğinde birkaç kez. her çağrı, belgenin mevcut durumunu serialize eder.
Bir belgenin lisanslı olup olmadığını nasıl kontrol edebilirim?
Document.IsLicensed geri döner a bool Bu durum sadece bilgi verici. Aspose.PDF FOSS için bu yalnızca bilgilendirilebilir - hiçbir etkinleştirme gerekmez.