Mengapa kotak hitam tidak mencukupi

Kebanyakan alatan PDF membenarkan pengguna untuk "redact" (memadam maklumat sensitif) dengan melukis segi empat hitam di atas teks sensitif. Segi empat tersebut menyembunyikan perkataan pada skrin, tetapi aksara di bawahnya tetap kekal dalam aliran kandungan fail. Sesiapa sahaja boleh memilih teks yang tersembunyi, menyalinnya, atau menjalankan skrip ringkas untuk mengekstraknya. Dalam erti kata lain, data tersebut masih ada; kotak hitam itu hanyalah penutup visual.

Masalah yang dihadapi oleh pembangun

Penulis memerlukan penyunting PDF yang berjalan sepenuhnya dalam pelayar, tanpa memuat naik fail ke pelayan. Kekangan tersebut menjadikannya mustahil untuk bergantung kepada perkhidmatan back-end untuk membuang teks. Penyelesaian sisi klien (client-side) yang sedia ada hanya menambah bentuk di atas kandungan, yang membiarkan teks asal kekal utuh. Cabarannya adalah untuk membuang teks secara kekal sambil memastikan operasi kekal pantas dan dokumen boleh digunakan.

Rasterisasi halaman terpilih: idea teras

Daripada menukar keseluruhan PDF kepada imej—langkah yang akan membesarkan saiz fail dan merosakkan keupayaan carian—penyelesaian ini melakukan rasterisasi hanya pada halaman yang mengandungi redaction. Halaman-halaman tersebut menjadi bitmap; setiap halaman lain kekal sebagai PDF vektor, mengekalkan pemilihan teks, carian, dan saiz fail yang kecil.

Pendekatan ini menghasilkan dokumen yang terasa normal: 19 halaman kekal tajam dan boleh dicari, manakala satu halaman sensitif tersebut menjadi imej piksel sahaja di mana maklumat tersembunyi tidak lagi wujud.

Tiga peraturan praktikal untuk penukaran yang boleh dipercayai

  1. Render pada skala tiga kali ganda – Bitmap dijana pada tiga kali ganda resolusi biasa halaman tersebut. Render resolusi rendah akan kelihatan kabur berbanding halaman vektor di sekelilingnya, yang boleh menimbulkan syak wasangka atau sekadar kelihatan tidak profesional.
  2. Gabungkan semua elemen visual ke dalam bitmap – Anotasi, tandatangan, tera air (watermark), dan segi empat redaction digabungkan bersama sebelum halaman dirasterisasi. Mencampurkan anotasi vektor dengan imej raster pada halaman yang sama boleh mengelirukan pembaca PDF, yang membawa kepada ralat paparan.
  3. Pautkan pada viewport, bukan piksel – Anotasi terikat pada koordinat viewport halaman. Apabila pengguna melakukan zum, elemen-elemen tersebut kekal selari dan bukannya beralih atau berskala secara tidak konsisten, yang jika tidak, boleh mendedahkan teks di bawahnya.

Melindungi daripada keadaan perlumbaan (race conditions)

Merender setiap halaman adalah tugas asinkronus (asynchronous). Jika pengguna mengubah saiz tetingkap pelayar dengan cepat, beberapa tugasan render boleh bertindih, menghasilkan bingkai yang rosak atau bertindih pada kanvas. Pelaksanaan ini memperkenalkan token render bagi setiap halaman: setiap permintaan render baharu membatalkan token sebelumnya, menyebabkan tugasan lama membatalkan dirinya sendiri. Hasilnya ialah pengalaman yang lancar dan bebas gangguan walaupun di bawah perubahan UI yang pantas.

Bagaimana rupa pertukaran (trade-offs) tersebut

Menukarkan halaman kepada bitmap menghapuskan sebarang teks tersembunyi, tetapi ia juga membuang keupayaan untuk mencari atau menyalin kandungan halaman tersebut.

Ke mana arah tuju seterusnya

Rumusan

Kotak hitam yang ringkas tidak memadam data; ia hanya menyembunyikannya. Dengan menukar hanya halaman yang memerlukan redaction kepada bitmap resolusi tinggi dan membiarkan baki PDF berasaskan vektor, penyunting berasaskan pelayar sahaja boleh memadam teks sensitif secara kekal sambil mengekalkan dokumen yang pantas, boleh dicari, dan peribadi. Kaedah ini mengimbangi keselamatan dengan kebolehgunaan, tetapi pengguna harus memerhatikan kesan kumulatif terhadap saiz fail dan keupayaan carian apabila melakukan redaction pada banyak halaman.