Mekanisme deteksi ini bertujuan untuk menganalisis konten visual setiap halaman dalam dokumen PDF secara otomatis. Tujuannya adalah untuk mengklasifikasikan setiap halaman ke dalam kategori harga yang tepat sehingga kalkulasi biaya cetak menjadi akurat dan konsisten.
1. Render Halaman ke Canvas
Setiap halaman dari file PDF tidak hanya dibaca datanya, tetapi juga "digambar" atau dirender menjadi sebuah gambar sementara pada elemen <canvas> HTML5 yang tersembunyi. Proses ini menciptakan representasi visual (peta piksel) dari halaman tersebut, yang siap untuk dianalisis lebih lanjut.
2. Analisis Piksel dan Persentase Warna
Setelah halaman menjadi gambar, skrip akan melakukan iterasi pada setiap piksel gambar tersebut.
- Untuk setiap piksel, skrip memeriksa nilai warna Merah (R), Hijau (G), dan Biru (B).
- Sebuah piksel dianggap "berwarna" jika ada perbedaan signifikan antara nilai R, G, dan B-nya. Jika nilai-nilai ini hampir sama, piksel tersebut dianggap sebagai skala abu-abu (grayscale).
- Skrip kemudian menghitung persentase total piksel berwarna di seluruh halaman.
3. Klasifikasi Kategori Halaman
Berdasarkan data persentase warna dan analisis internal untuk mendeteksi gambar, halaman diklasifikasikan sebagai berikut:
- 🎨 Full Warna (FULL_COLOR): Diterapkan jika persentase total warna (RGB) pada halaman lebih dari 10%. Ini mengindikasikan halaman dengan gambar besar, latar belakang berwarna, atau grafik yang dominan.
- 🖼️ Setengah Warna/Logo (SEMI_COLOR): Diterapkan jika persentase total warna (RGB) pada halaman berada di antara 0.1% dan 10%. Kategori ini mencakup halaman dengan teks berwarna, logo, atau gambar kecil.
- ⚫ Hitam Putih (BW): Diterapkan jika persentase total warna (RGB) pada halaman di bawah 0.1%. Ini berarti halaman tersebut secara efektif hanya berisi teks dan elemen hitam-putih.