Cara Bekerja dengan Core Document Management di .NET

Cara Bekerja dengan Core Document Management di .NET

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

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

Tambahkan Aspose.PDF FOSS ke proyek Anda:

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

Verifikasi referensi dalam .csproj Anda:

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

Langkah 2: Impor Kelas yang Diperlukan

Tambahkan direktif using yang diperlukan di bagian atas file Anda:

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

Langkah 3: Buat Dokumen PDF Baru

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

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 yang Ada

Document.Open menerima array byte, jalur file, atau stream. Gunakan using untuk memastikan dokumen dibuang setelah digunakan:

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

Properti Document.Pages mengembalikan PageCollection. Halaman diindeks mulai dari 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 aliran dengan Document.Save(), atau serialisasi ke array byte 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 Beberapa Dokumen

Gunakan Document.Merge() untuk menggabungkan beberapa instance 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() adalah overload yang setara yang menerima array jalur file secara langsung.

Masalah Umum dan Solusi

Koleksi halaman kosong setelah Document.Create()
Document.Create() mengembalikan dokumen tanpa halaman. Anda harus secara eksplisit menambahkan halaman sebelum mengakses doc.Pages[1]. Mencoba mengakses indeks yang tidak ada akan melemparkan IndexOutOfRangeException.

InvalidOperationException saat memanggil Document.Open pada file yang rusak
Jika array byte PDF atau file terpotong atau tidak valid, Document.Open akan melempar. Validasi bahwa array byte sumber adalah PDF lengkap (dimulai dengan %PDF-) sebelum mengirimkannya ke Open.

Document not disposed — memory leak in high-throughput scenarios
Selalu bungkus panggilan Document.Open dan Document.Create dalam pernyataan using. Kelas Document mengimplementasikan IDisposable; gagal membuangnya menyebabkan aliran dasar dan tabel referensi silang tetap berada di memori.

Save(ms) after ms.Position is not reset
Saat membaca kembali dari MemoryStream setelah doc.Save(ms), reset ms.Position = 0 sebelum membaca. Mengabaikan langkah ini menyebabkan pembaca menemukan PDF yang kosong atau parsial.

Merge menghasilkan dokumen dengan jumlah halaman yang tidak terduga
Pastikan semua dokumen sumber dimuat sepenuhnya sebelum meneruskannya ke Document.Merge. Membuang dokumen sumber sebelum pemanggilan merge dapat mengakibatkan pohon halaman yang tidak lengkap.

Pertanyaan yang Sering Diajukan

Apakah saya dapat membuka PDF yang dilindungi kata sandi?

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

Apakah Document.ToArray() berbeda dari menyimpan ke MemoryStream?

Document.ToArray() adalah metode kemudahan yang secara internal menyimpan ke MemoryStream dan mengembalikan array byte yang dihasilkan. Kedua jalur menghasilkan output PDF yang identik.

Apa tipe properti Pages?

Document.Pages adalah tipe PageCollection. Ini diindeks mulai dari 1; doc.Pages[1] adalah halaman pertama.

Apakah saya dapat menyimpan dokumen beberapa kali?

Ya. Anda dapat memanggil doc.Save() atau doc.ToArray() beberapa kali pada instance dokumen yang sama. Setiap pemanggilan menyerialkan keadaan saat ini dari dokumen.

Bagaimana cara memeriksa apakah dokumen berlisensi?

Document.IsLicensed mengembalikan sebuah bool yang menunjukkan status lisensi internal. Untuk Aspose.PDF FOSS ini hanya bersifat informatif — tidak diperlukan aktivasi.

Lihat Juga

 Bahasa Indonesia