deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Sıfır backend'li PDF editörü gerçek sansür için tarayıcıda content stream'leri yeniden yazıyor

Dev.to'da yayımlanan bir yazı, metin düzenleme ve sansürde content stream'leri yeniden yazan, cihaz üzerinde OCR sunan ve böylece dosyaların asla tarayıcıdan çıkmadığı statik site tabanlı bir PDF editörünü ayrıntılarıyla anlatıyor.

Sıfır backend'li PDF editörü gerçek sansür için tarayıcıda content stream'leri yeniden yazıyor

Dev.to'da yazan bir geliştirici, yalnızca statik bir web sitesi olarak dağıtılan bir PDF editörü olan PDF Studio'nun ayrıntılı bir anlatımını yayımladı: arkasında sunucu tarafı API'si, veritabanı, giriş sistemi veya analitiği olmayan bir HTML dosyası, JavaScript ve CSS. Render, düzenleme, form doldurma, sansürleme ve OCR işlemlerinin tümü ziyaretçinin tarayıcısında çalışıyor; böylece vergi beyannameleri, sözleşmeler ve tıbbi kayıtlar gibi belgeler, kullanıcının inceleyemeyeceği bir altyapıya asla gönderilmiyor.

Mimarının bir özelliği olarak gizlilik

Dev.to gönderisine göre çıkış noktası, bir PDF'in opak bir yığın değil yapılandırılmış bir belge biçimi olduğu gözlemiydi. Render etmek, nesneleri ayrıştırmak ve bir canvas'a boyamak anlamına gelir; düzenlemek ise bu nesneleri yeniden yazmak ve dosyayı yeniden serileştirmek demektir. Modern tarayıcılar bu hesaplamayı kolayca hallediyor; yani geleneksel PDF araçlarındaki sunucu, teknik bir zorunluluktan çok geliştiriciler için bir kolaylıktı. Yazar bu tercihi bir maliyet tasarrufu değil, bir ürün kararı olarak çerçeveliyor: sunucu olmadığında girilecek bir sistem, teslim edilecek kayıt ya da satılacak veri yok; gizlilik, bir politikanın vaadinden değil, sistemin kuruluş biçiminden doğuyor.

Editör nasıl çalışıyor

Sayfalar, cihazın piksel oranında canvas öğelerine render ediliyor. Metin seçim katmanı yok; editör metni bulmak için content stream üzerinde kendi isabet testini yapıyor ve yakınlaştırmada görüntüyü germek yerine daha yüksek bir ölçekte yeniden render ediyor, böylece tipografi keskin kalıyor.

Yazara göre asıl ayrışma noktası metin düzenleme. Pek çok uygulama PDF üzerine yazmanıza izin veriyor ve eskisinin üstüne yeni metin çizilmiş bir dosya dışa aktarıyor; bu durumda özgün içerik seçilebilir ve çıkarılabilir olarak kalıyor. PDF Studio ise dışa aktarım sırasında sayfanın content stream'indeki eski metin gösterme operatörlerini değiştiriyor ve dosyayı özgün veri olmadan yeniden serileştiriyor. Bir sınırlama açıkça belirtiliyor: Özgün fontun kodlayamadığı yazı sistemlerindeki değişiklikler, eski metnin üzerine boyamaya geri düşüyor; ancak yazar bunu nadir bir durum olarak tanımlıyor.

Formlar, AcroForm alan tanımları ayrıştırılarak ve doldurulabilir girdiler üstüne yerleştirilerek işleniyor; dışa aktarımda alanlar canlı kalabilir ya da cevapları değiştirememesi gereken alıcılar için statik sayfa içeriğine düzleştirilebilir. Sansürleme de aynı ilkeyi uyguluyor: hassas metin content stream'den tamamen kaldırılıyor ve işaret sayfaya kalıcı olarak render ediliyor, böylece dışa aktarılan dosyada ondan iz kalmıyor. Yazar, doğrulanamayan iddiaların bu amaç için değer taşımadığı gerekçesiyle, sansürü doğrulama üzerine ayrı bir kılavuz da yazmış.

Taranmış belgeler, Web Worker içinde çalışan Tesseract'ın WebAssembly derlemesiyle OCR'den geçiyor, böylece arayüz hiçbir zaman bloke olmuyor; dil verileri bir kez indiriliyor ve yerel olarak önbelleğe alınıyor. Tüm belge durumu, tam bir geri al ve yinele yığınıyla bellekte tutuluyor; oturumlar tarayıcının kendi yerel deposuna otomatik kaydediliyor ve tek tıkla kayıtlı oturum cihazdan siliniyor.

Zor kısımlar

İlk kısıt bellek. Gömülü fontlar içeren 200 sayfalık bir PDF, her sayfa bir canvas taşıdığında ciddi miktarda RAM tüketebiliyor; bu yüzden uygulama render çözünürlüğünü sınırlıyor ve kullanıcı yakınlaştığında eski render görevlerini hemen iptal ediyor; yalnızca görünür alana yakın sayfaları render etme hâlâ yol haritasında ve yazar bu disiplini dayattığı için mobil cihazlara teşekkür ediyor.

İkinci kısıt metin düzenleme sadakati. PDF'ler glifleri akış düzeni yerine açık koordinatlarla konumlandırıyor; bu yüzden bir satırı değiştirmek, eski çizim işlemlerini kaldırmak, değişimin aynı koordinat uzayında nereye ait olduğunu hesaplamak ve diğer render'ların özdeş yorumlayacağı yeni işlemler yazmak anlamına geliyor — sıradan kelime işlemcilikten çok hassas koordinat işi.

Yazarın anlattığına göre yakın tarihli mobil baştan çıkarma en büyük tek parça iş olmuş: on altı işaretleme aracı, imleç hassasiyeti yerine dokunmaya uygun etkileşimler gerektiriyordu ve diyalogların telefon görünüm alanlarına sığması gerekiyordu. Çıkarılan ders, telefonların küçültülmüş bir masaüstü düzenini değil, farklı bir girdi modeli talep ettiği. Çevrimdışı kullanımı sağlayan service worker da bir test tuzağı yaratmış; düzeltmeleri yokmuş gibi gösteren bayat önbellek paketlerini tekrar tekrar sunmuş; yazar, QA sürecine paket karması (bundle hash) doğrulaması yerleştirilmesini öneriyor.

Sırada ne var

Dışa aktarım hattı şu anda belgenin tamamını yeniden serileştiriyor; bu, 500 sayfalık bir raporda tek bir kelime değiştiğinde israfa yol açıyor. Artımlı kayıtlar bir sonraki mimari proje.

Erişilebilirlik

Uygulama ücretsiz ve MIT lisanslı; yazarın NavigatorsLab projesi altında barındırılıyor ve kaynak kodu GitHub'da NavigatorsLab-PDF-Studio olarak yayımlanmış. Kayıt yok ve yazar, aracın baş edemediği herhangi bir PDF bildirimini davet ediyor.

Neden önemli

Gönderi, uzun süredir sunucular gerektirdiği varsayılan bir yazılım kategorisinin — hassas dosyalar üzerinde belge işleme — bugünün tarayıcılarında statik varlıklar olarak sunulabileceğinin çalışan bir kanıtı. Bir content stream'i yeniden yazmak ile üzerine çizmek arasındaki fark kozmetik değil: özgün veriyi yerinde bırakan editörler, sözde sansürlenmiş metnin hâlâ seçilebildiği, kopyalanabildiği veya çıkarılabildiği dosyalar dışa aktarıyor. Geliştiriciler için bu yazı, bellek sınırlarından font kodlama uç durumlarına, mobil girdi yeniden tasarımından service worker önbelleği tuzaklarına kadar istemci tarafına geçmenin maliyetlerinin dürüst bir kontrol listesi olarak da iş görüyor.

  • #pdf
  • #web-apps
  • #privacy
  • #client-side
  • #open-source

İlgili yazılar