Cara Bekerja dengan Pengurusan Dokumen Teras dalam .NET

Cara Bekerja dengan Pengurusan Dokumen Teras dalam .NET

Aspose.PDF FOSS untuk .NET menyediakan kelas Document sebagai titik masuk utama untuk semua operasi PDF. Pasang pakej dengan dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha dan gunakan Document.Create(), Document.Open(), Document.Save(), dan Document.Merge() untuk mengurus dokumen PDF secara programatik pada .NET 8+.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

Tambah Aspose.PDF FOSS ke projek anda:

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

Sahkan rujukan dalam .csproj anda:

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

Langkah 2: Import Kelas yang Diperlukan

Tambah arahan using yang diperlukan di bahagian atas fail anda:

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

Langkah 3: Buat Dokumen PDF Baru

Gunakan Document.Create() untuk menghasilkan dokumen dalam memori yang kosong:

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

Langkah 4: Buka PDF Sedia Ada

Document.Open menerima susunan bait, laluan fail, atau aliran. Gunakan using untuk memastikan dokumen dibuang selepas penggunaan:

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

Langkah 5: Akses Halaman

Sifat Document.Pages mengembalikan PageCollection. Halaman berindeks 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;

Langkah 6: Simpan Dokumen

Simpan ke stream dengan Document.Save(), atau serialize ke array bait dengan 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();

Langkah 7: Gabungkan Pelbagai Dokumen

Gunakan Document.Merge() untuk menggabungkan beberapa contoh Document menjadi satu:

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() ialah overload yang setara yang menerima tatasusunan laluan fail secara langsung.

Isu Umum dan Penyelesaian

Koleksi Pages kosong selepas Document.Create()
Document.Create() mengembalikan dokumen tanpa halaman. Anda mesti menambah halaman secara eksplisit sebelum mengakses doc.Pages[1]. Mencuba mengakses indeks yang tidak wujud akan melemparkan IndexOutOfRangeException.

InvalidOperationException ketika memanggil Document.Open pada fail rosak
Jika tatasusunan bait PDF atau fail dipotong atau tidak sah, Document.Open akan melemparkan pengecualian. Sahkan bahawa tatasusunan bait sumber adalah PDF lengkap (dimulai dengan %PDF-) sebelum menghantarnya ke Open.

Document not disposed — memory leak in high-throughput scenarios Sentiasa balut panggilan Document.Open dan Document.Create dalam pernyataan using. Kelas Document melaksanakan IDisposable; kegagalan untuk membuangnya menyebabkan aliran asas dan jadual rujukan silang kekal dalam memori.

Simpan(ms) selepas ms.Position tidak direset
Apabila membaca kembali dari MemoryStream selepas doc.Save(ms), set semula ms.Position = 0 sebelum membaca. Mengabaikan langkah ini menyebabkan pembaca menemui PDF yang kosong atau separa.

Merge menghasilkan dokumen dengan kiraan halaman yang tidak dijangka Pastikan semua dokumen sumber dimuat sepenuhnya sebelum menghantarnya ke Document.Merge. Membuang dokumen sumber sebelum panggilan merge mungkin mengakibatkan pokok halaman yang tidak lengkap.

Soalan Lazim

Bolehkah saya membuka PDF yang dilindungi kata laluan?

Ya. Gunakan Document.Open(data, password) atau Document.Open(path, password) untuk menyediakan kata laluan pemilik atau pengguna sebagai argumen kedua.

Adakah Document.ToArray() berbeza dengan menyimpan ke MemoryStream?

Document.ToArray() ialah kaedah kemudahan yang secara dalaman menyimpan ke MemoryStream dan mengembalikan susunan bait yang terhasil. Kedua‑dua laluan menghasilkan output PDF yang serupa.

Apakah jenis sifat Pages?

Document.Pages adalah jenis PageCollection. Ia berindeks 1; doc.Pages[1] adalah halaman pertama.

Bolehkah saya menyimpan dokumen berulang kali?

Ya. Anda boleh memanggil doc.Save() atau doc.ToArray() berulang kali pada contoh dokumen yang sama. Setiap panggilan menserialkan keadaan semasa dokumen.

Bagaimana saya memeriksa sama ada dokumen berlesen?

Document.IsLicensed mengembalikan bool yang menunjukkan keadaan pelesenan dalaman. Untuk Aspose.PDF FOSS ini hanya bersifat maklumat — tiada pengaktifan diperlukan.

Lihat Juga

 Bahasa Melayu