PDF Formlar Neden Bazı Uygulamalarda Boş Açılıyor
PDF formlarıyla çalışan bir yazılımcı iseniz bu sorunu biliyorsunuz: kullanıcı formu doldurur, gönderir, ama yönetici dosyayı macOS Preview, Google Chrome veya mobil bir okuyucuda açtığında tüm alanlar boş görünüyor. Aynı dosya Adobe Acrobat'ta mükemmel açılıyor.
Bu bir bozulma hatası değil. PDF standardında (ISO 32000-1) form verileri sayfanın görsel içeriğinden ayrı tutulur. Adobe Acrobat bu ayrı veri katmanını başarıyla yorumlarken, Chrome, Safari Preview ve mobil uygulamalar bu alanları render etmeyebiliyor.
Sorunun Kökü
PDF'de form alanlarının değerleri iki yerde saklanır: form widget (etkileşimli alan) ve /AP (appearance stream) adlı görünüm katmanı. Acrobat her ikisini de kontrol eder ve eksikse tamamlar. Diğer okuyucular yalnızca /AP'ye bakar; eğer form doldurulurken bu katman güncellenmemişse, alan boş görünür.
Çözüm: Form Flattening
Flattening, form alanlarını normal metin ve grafiğe dönüştürüp PDF'ye kalıcı olarak gömüyor. Böylece tüm okuyucular aynı sonucu görebiliyor. Rust'ta bu işi yapan kütüphaneler var (pdfium-render, lopdf gibi), Python'da reportlab ve pypdf, JavaScript'te pdfkit kullanılabilir.
Form gönderdikten sonra flattening uygulamak, özellikle arşivleme ve denetim amaçlı dokümanlarda standart pratik haline geldi. Böylece kullanıcı ne doldurmuşsa, yönetici de onu görebiliyor.
0 yorum