Mengapa kotak hitam saja tidak cukup
Sebagian besar alat PDF memungkinkan pengguna untuk melakukan “redaksi” dengan menggambar persegi panjang hitam di atas teks sensitif. Persegi panjang tersebut menyembunyikan kata-kata di layar, tetapi karakter yang mendasarinya tetap ada dalam aliran konten file. Siapa pun dapat memilih teks yang tersembunyi, menyalinnya, atau menjalankan skrip sederhana untuk mengekstraknya. Dengan kata lain, datanya masih ada; kotak hitam tersebut hanyalah penutup visual.
Masalah yang dihadapi pengembang
Penulis membutuhkan editor PDF yang berjalan sepenuhnya di browser, tanpa mengunggah file ke server. Kendala tersebut membuat ketergantungan pada layanan back-end untuk menghapus teks menjadi tidak mungkin. Solusi sisi klien (client-side) yang ada saat ini hanya menambahkan bentuk di atas konten, yang membiarkan teks asli tetap utuh. Tantangannya adalah menghapus teks secara permanen sambil menjaga agar operasi tetap cepat dan dokumen tetap dapat digunakan.
Rasterisasi halaman selektif: ide utamanya
Alih-alih mengubah seluruh PDF menjadi gambar—langkah yang akan membuat ukuran file membengkak dan merusak kemampuan pencarian—solusi ini melakukan rasterisasi hanya pada halaman yang berisi redaksi. Halaman-halaman tersebut menjadi bitmap; halaman lainnya tetap berupa PDF vektor, sehingga tetap mempertahankan pemilihan teks, pencarian, dan ukuran file yang kecil.
Pendekatan ini menghasilkan dokumen yang terasa normal: 19 halaman tetap tajam dan dapat dicari, sementara satu halaman sensitif menjadi gambar berbasis piksel saja di mana informasi tersembunyi tidak lagi ada.
Tiga aturan praktis untuk konversi yang andal
- Render pada skala tiga kali lipat – Bitmap dibuat dengan resolusi tiga kali lipat dari resolusi normal halaman tersebut. Hasil render beresolusi rendah akan terlihat buram di samping halaman vektor di sekitarnya, yang dapat menimbulkan kecurigaan atau sekadar terlihat tidak profesional.
- Gabungkan semua elemen visual ke dalam bitmap – Anotasi, tanda tangan, watermark, dan persegi panjang redaksi digabungkan menjadi satu sebelum halaman dirasterisasi. Mencampur anotasi vektor dengan gambar raster pada halaman yang sama dapat membingungkan pembaca PDF, yang menyebabkan kesalahan tampilan.
- Jangkar pada viewport, bukan piksel – Anotasi terikat pada koordinat viewport halaman. Saat pengguna melakukan zoom, elemen-elemen tetap sejajar alih-alih bergeser atau berskala secara tidak konsisten, yang jika tidak dilakukan dapat mengekspos teks yang mendasarinya.
Melindungi dari race condition
Merender setiap halaman adalah tugas asinkron. Jika pengguna mengubah ukuran jendela browser dengan cepat, beberapa tugas render dapat tumpang tindih, menghasilkan frame yang rusak atau bertumpuk pada canvas. Implementasi ini memperkenalkan token render per halaman: setiap permintaan render baru membatalkan token sebelumnya, yang menyebabkan tugas lama membatalkan dirinya sendiri. Hasilnya adalah pengalaman yang mulus dan bebas gangguan bahkan di bawah perubahan UI yang cepat.
Seperti apa konsekuensi (trade-offs) yang muncul
Mengubah halaman menjadi bitmap menghapus teks tersembunyi apa pun, tetapi juga menghilangkan kemampuan untuk mencari atau menyalin konten halaman tersebut.
Ke mana arah selanjutnya
Kesimpulan
Kotak hitam sederhana tidak menghapus data; ia hanya menyembunyikannya. Dengan hanya mengubah halaman yang memerlukan redaksi menjadi bitmap beresolusi tinggi dan membiarkan sisa PDF berbasis vektor, editor berbasis browser dapat menghapus teks sensitif secara permanen sambil menjaga dokumen tetap cepat, dapat dicari, dan privat. Metode ini menyeimbangkan keamanan dengan kegunaan, tetapi pengguna harus memperhatikan dampak kumulatif pada ukuran file dan kemampuan pencarian saat melakukan redaksi pada banyak halaman.
