Operator Aliran Konten
Panduan ini menunjukkan cara mengakses dan memanipulasi operator aliran konten PDF menggunakan ContentStreamParser dan (b) ContentStreamBuilder dalam Aspose.PDF FOSS untuk Java. Anda akan belajar membaca byte konten halaman mentah dan menggunakan parser untuk memeriksa gambar perintah.
Aliran Konten
Konten halaman PDF dikodekan sebagai urutan operator dalam aliran konten. Page menyediakan akses ke operator kontennya melalui getContents() properti.
ContentStreamParser
ContentStreamParser menguraikan byte aliran konten mentah menjadi objek operator, memungkinkan pemeriksaan programatis dari perintah gambar halaman. Melalui byte mentah dari page.getContents().toByteArray() ke constructor parser:
try (Document doc = new Document("input.pdf")) {
PageCollection pages = doc.getPages();
Page page = pages.get(1);
byte[] contentBytes = page.getContents().toByteArray();
ContentStreamParser parser = new ContentStreamParser(contentBytes);
// Iterate over parsed operators
}ContentStreamBuilder
ContentStreamBuilder menciptakan aliran konten baru untuk disematkan ke dalam sebuah Page. Penggunaan ContentStreamBuilder ketika membangun konten halaman secara programatis daripada Setelah membangun aliran, menugaskannya kembali ke halaman dan menyimpan dokumen.
Referensi Operator
Operator aliran konten PDF didefinisikan dalam ISO 32000-1:2008, Tabel A.1. Umum. operator termasuk operator teks (BT, ET, Tf, Tj), operator keadaan grafis (q, Q, cm), dan operator jalur (m, l, h, f, S).
Operator aliran konten mengikuti spesifikasi PDF (ISO 32000-1:2008, §8). Penggunaan ContentStreamParser untuk mengulang operator dalam aliran yang ada.
Mengakses Konten Halaman Raw
Untuk membaca byte mentah dari stream konten halaman, panggil page.getContents().toByteArray(). Byte kemudian dapat diperiksa, didekodekan, atau diteruskan ke ContentStreamParser:
try (Document doc = new Document("input.pdf")) {
PageCollection pages = doc.getPages();
Page page = pages.get(1);
byte[] contentBytes = page.getContents().toByteArray();
System.out.println("Content stream size: " + contentBytes.length + " bytes");
}