Operasi Konten
Operasi Konten
Halaman PDF dirender oleh urutan operator yang disimpan dalam aliran konten.
Aspose.PDF FOSS for .NET mengekspos operator-operator ini melalui OperatorCollection
pada setiap Page, dan menyediakan ContentStreamBuilder untuk membangun konten baru
secara programatik.
Membaca operator aliran konten
Setiap Page memiliki properti Contents yang mengembalikan sebuah OperatorCollection. Iterasikan itu untuk memeriksa setiap operator.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}Membangun aliran konten
ContentStreamBuilder menyediakan API yang lancar untuk membangun urutan operator aliran‑konten termasuk manajemen keadaan‑grafik, konstruksi jalur, output teks, dan pengaturan warna.
var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0); // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();Status grafis
GraphicsState melacak matriks transformasi saat ini, status teks, dan
nilai warna saat operator dijalankan. Operasi utama:
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();Operator warna
SetColor dan SetColorStroke mengatur warna isi dan garis tepi masing-masing. Mereka menerima komponen RGB, CMYK, atau skala abu‑abu.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);operator teks
ShowText menampilkan string teks pada posisi teks saat ini menggunakan font dan ukuran saat ini dari keadaan grafik.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix memposisikan teks dengan mendefinisikan matriks transformasi untuk ruang teks.
Keadaan grafis yang diperluas
ExtGState mengontrol properti rendering lanjutan seperti isi dan garis alpha (transparansi) serta mode campuran.
Tips dan Praktik Terbaik
- Selalu pasangkan
SaveState/RestoreState(atau operatorq/Q) untuk menghindari kerusakan pada stack status grafik. - Gunakan
ContentStreamBuilderuntuk konten baru daripada membuat objek operator secara manual. - Periksa
OperatorCollectiondalam mode baca-saja sebelum memodifikasi — urutan operator yang tidak terduga dapat menyebabkan masalah rendering. - Operator warna harus sesuai dengan ruang warna saat ini (RGB, CMYK, atau skala abu-abu).
- Gunakan
SetAdvancedColoruntuk pola dan ruang warna berbasis ICC.
Masalah Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| Teks tidak terlihat setelah menambahkan operator | Tidak ada font yang diatur dalam status teks | Tambahkan operator SetFont sebelum ShowText |
| Warna muncul salah | Ketidaksesuaian ruang warna (RGB vs CMYK) | Gunakan operator yang sesuai dengan ruang warna yang aktif |
| Tumpukan status grafis meluap | Pasangan Save / Restore tidak seimbang | Pastikan setiap SaveState memiliki RestoreState yang cocok |
| Konten muncul di posisi yang salah | Transformasi matriks hilang atau tidak tepat | Verifikasi nilai SetMatrix atau ConcatMatrix |
FAQ
Apa itu aliran konten PDF?
Aliran konten adalah urutan operator yang menjelaskan cara merender halaman — menggambar jalur, menempatkan teks, mengatur warna, dan mengelola status grafis.
Apakah saya dapat menambahkan konten baru ke halaman yang sudah ada?
Ya. Akses page.Contents dan tambahkan operator baru, atau gunakan ContentStreamBuilder untuk membuat urutan dan menambahkannya.
Bagaimana cara membuat teks transparan?
Gunakan ExtGState untuk mengatur alpha isi (ca) ke nilai antara 0 (sepenuhnya transparan) dan 1 (sepenuhnya opak).
Ringkasan Referensi API
| Kelas / Metode | Deskripsi |
|---|---|
OperatorCollection | Urutan operator aliran konten pada halaman |
ContentStreamBuilder | Builder fluens untuk membangun urutan operator |
ContentStreamBuilder.SaveState | Mendorong keadaan grafik saat ini ke tumpukan |
ContentStreamBuilder.RestoreState | Mengeluarkan keadaan grafik dari tumpukan |
ContentStreamBuilder.SetFillColor | Mengatur warna isi dalam ruang warna saat ini |
ContentStreamBuilder.SetMatrix | Menerapkan transformasi koordinat |
GraphicsState | Melacak matriks transformasi, warna, dan keadaan teks |
SetColor | Operator yang mengatur warna non-stroking (isi) |
SetColorStroke | Operator yang mengatur warna stroking |
SetAdvancedColor | Operator untuk pola / ruang warna berbasis ICC |
ShowText | Operator yang merender string teks |
SetTextMatrix | Operator yang memposisikan teks melalui matriks |
ExtGState | Keadaan grafik yang diperluas (alpha, mode pencampuran) |