Neden bir siyah kutu yeterli değildir

Çoğu PDF aracı, hassas metnin üzerine siyah bir dikdörtgen çizerek kullanıcıların “karartma” (redact) yapmasına olanak tanır. Dikdörtgen, kelimeleri ekranda gizler ancak alttaki karakterler dosyanın içerik akışında (content stream) kalmaya devam eder. Herhangi biri gizlenen metni seçebilir, kopyalayabilir veya onu dışa aktarmak için basit bir betik çalıştırabilir. Başka bir deyişle, veri hâlâ oradadır; siyah kutu sadece görsel bir örtüdür.

Geliştiricinin karşılaştığı sorun

Yazar, dosyaları bir sunucuya yüklemeden tamamen tarayıcıda çalışan bir PDF düzenleyiciye ihtiyaç duyuyordu. Bu kısıtlama, metni temizlemek için bir arka uç (back-end) servisine güvenmeyi imkansız kılıyor. Mevcut istemci tarafı (client-side) çözümler, içeriğin üzerine sadece bir şekil ekler ve bu da orijinal metni bozulmadan bırakır. Zorluk, işlemi hızlı ve belgeyi kullanılabilir tutarken metni kalıcı olarak kaldırmaktı.

Seçmeli sayfa rasterizasyonu: temel fikir

Tüm PDF'i bir görsele dönüştürmek yerine —ki bu adım dosya boyutunu şişirir ve aranabilirliği yok eder— çözüm, yalnızca karartma içeren sayfaları rasterize eder. Bu sayfalar bitmap haline gelir; diğer tüm sayfalar ise metin seçimi, arama ve küçük dosya boyutunu koruyarak vektör PDF olarak kalır.

Bu yaklaşım normal hissettiren bir belge ortaya çıkarır: 19 sayfa net ve aranabilir kalırken, hassas olan tek sayfa, gizli bilgilerin artık mevcut olmadığı sadece piksellerden oluşan bir görüntü haline gelir.

Güvenilir dönüşüm için üç pratik kural

  1. Üç kat ölçekte render alın – Bitmap, sayfanın normal çözünürlüğünün üç katında oluşturulur. Düşük çözünürlüklü bir render, çevredeki vektör sayfaların yanında bulanık görünür; bu da şüphe uyandırabilir veya sadece profesyonellikten uzak bir görüntü oluşturabilir.
  2. Tüm görsel öğeleri bitmap ile birleştirin – Açıklamalar, imzalar, filigranlar ve karartma dikdörtgeni, sayfa rasterize edilmeden önce birlikte kompoze edilir. Aynı sayfada vektör açıklamaları bir raster görüntü ile karıştırmak, PDF okuyucuların kafasını karıştırabilir ve görüntüleme hatalarına yol açabilir.
  3. Piksellere değil, viewport'a sabitleyin – Açıklamalar sayfanın viewport koordinatlarına bağlıdır. Kullanıcı yakınlaştırma yaptığında, öğeler kaymak veya tutarsız bir şekilde ölçeklenmek yerine hizalı kalır; aksi takdirde alttaki metin açığa çıkabilir.

Yarış durumlarına (race conditions) karşı koruma

Her sayfayı render etmek asenkron bir görevdir. Eğer bir kullanıcı tarayıcı penceresini hızlıca yeniden boyutlandırırsa, birden fazla render görevi üst üste binebilir ve tuval (canvas) üzerinde bozuk veya üst üste binen kareler oluşabilir. Uygulama, sayfa başına bir render jetonu (render token) sunar: her yeni render isteği önceki jetonu geçersiz kılar ve eski görevin kendi kendini iptal etmesini sağlar. Sonuç, hızlı kullanıcı arayüzü (UI) değişiklikleri altında bile sorunsuz ve hatasız bir deneyimdir.

Tavizler neye benziyor

Bir sayfayı bitmap'e dönüştürmek tüm gizli metinleri kaldırır, ancak aynı zamanda o sayfanın içeriğini arama veya kopyalama yeteneğini de ortadan kaldırır.

Bu süreç bundan sonra nereye gidebilir

Özet

Basit bir siyah kutu verileri silmez; sadece gizler. Sadece karartma gerektiren sayfaları yüksek çözünürlüklü bitmap'lere dönüştürerek ve PDF'in geri kalanını vektör tabanlı bırakarak, yalnızca tarayıcıda çalışan bir düzenleyici, belgeyi hızlı, aranabilir ve gizli tutarken hassas metinleri kalıcı olarak silebilir. Bu yöntem güvenlik ile kullanılabilirliği dengeler, ancak kullanıcılar çok sayıda sayfayı karartırken dosya boyutu ve aranabilirlik üzerindeki kümülatif etkiye dikkat etmelidir.