Diyarbakır'da dijital ajans işleten ya da kendi yazılımını geliştiren ekipler için tanıdık bir dert var: fatura, rapor ya da belgeyi PDF'e çevirmek gerektiğinde iş sunucuya biniyor. htpo (HTML to PDF Offline) adlı açık kaynak kütüphane bu işi sunucudan alıp doğrudan ziyaretçinin tarayıcısına taşıyor. HTML metni, adresi ya da sayfadaki bir DOM elemanı tarayıcı içinde PDF'e dönüştürülüyor; dosya hiçbir sunucuya gönderilmiyor.
Sunucudaki iş tarayıcıya geçiyor
Yaygın kullanılan araçlardan wkhtmltopdf, HTML'i sunucuda işleyip PDF üretir. Her istek sunucudan işlemci gücü, bellek ve sıra alır; yoğun günlerde kuyruk uzar. htpo farklı bir yol izliyor: dönüştürme işini kullanıcının tarayıcısı yapıyor, sunucu yalnızca sayfayı teslim ediyor. Kütüphanenin compatibility seçeneğinde qt-webkit modu bulunuyor; bu mod eski Qt WebKit düzenini taklit ederek wkhtmltopdf'tan geçiş yapanların alıştığı satır yüksekliği ve görsel yerleşimini yakalamaya çalışıyor.
Burada bir ölçüm iddiası yok: htpo ile wkhtmltopdf arasında hız ya da sunucu tasarrufu karşılaştırması yapılmadı. Anlatılan, işin nerede yapıldığına dair mimari bir fark. Yükün ziyaretçinin cihazına geçmesi, ağır belgelerde kullanıcı tarafında bekleme demek; sunucu tarafında ise kuyruk riskinin azalması.

Diyarbakır'daki ekipler için ne anlama geliyor
Kentte e-ticaret altyapısı, kurumsal panel ya da belediye entegrasyonu geliştiren küçük ekiplerin ortak sıkıntısı sunucu kapasitesi. Aylık rapor, sipariş fişi ya da başvuru formu çıktısı için ayrı bir dönüştürme servisi kurmak, bunun işlemci ve sıra yükünü yönetmek ek maliyet ve bakım demek. htpo bu yükü tarayıcıya devrettiği için ek servis ihtiyacını ortadan kaldırıyor; tek dosya olarak CDN'den ya da yerel kopyadan yüklenebiliyor, derleme adımı istemiyor.
Türkçe karakter desteği README'de ayrıca belirtilmiş: gömülü DejaVu Sans regular ve bold fontları Türkçe karakterleri karşılıyor, testlerde Türkçe ve Unicode metnin korunduğu, font alt kümelemenin ve metin çıkarımının çalıştığı doğrulanmış. Diyarbakır'da ş, ğ, ı, İ harfleriyle dolu kurum adları ve adresler düşünüldüğünde bu, eski araçlarda sık çıkan kutu karakter sorununa karşı önemli bir ayrıntı.
Kurulum ve ilk kullanım
Paket npm üzerinden @8bit.tr/htpo adıyla yayında. Kurulum ve temel kullanım README'deki gibi:
npm install @8bit.tr/htpo
const pdf = await Htpo.toPdf(html, {
format: 'a4',
mode: 'vector'
});
pdf.save('rapor.pdf');
Varsayılan vector modunda metin seçilebilir kalıyor, fontlar gömülüyor, HTTP, mailto ve tel bağlantıları korunuyor. Sayfa boyutu, yön, kenar boşluğu, üst-alt bilgi, zaman aşımı ve sayfa sınırı ayarlanabiliyor; prepare() ile önce ekran önizlemesi alınabiliyor. Eksik görsel ya da font üretimi durdurmuyor, diagnostics listesinde kodlanmış uyarı olarak dönüyor.
Deneysel sürüm: üretimde test şart
Aracın sınırlarını da yazmak gerekiyor. Sürüm 0.1.0 ve deneysel; geliştirici Uğur Yıldırım (8bit.tr), lisans MIT. GitHub deposu yeni: tek commit, tek yıldız, henüz çatal yok. Yani "yaygın kullanılan" bir araç değil, ilk sürümünü yeni yayınlamış bir proje.
Desteklenmeyenler listesi de kısa değil: PDF/A, etiketli PDF, form alanları, şifreleme ve dijital imza yok. WOFF ve WOFF2 fontlar, değişken fontlar ve karmaşık yazı sistemlerinin şekillendirmesi desteklenmiyor; bu durumlarda raster mod öneriliyor ama raster modda metin seçilemiyor ve bağlantılar kayboluyor. Kaynak yükleme tarayıcının CORS kurallarına bağlı, PDF üretimi için de DOM şart — SDK Node.js tarafında dönüştürücü olarak çalışmıyor. Fatura ya da resmî belge üretecekler için arşiv formatı ve imza gereksinimi ayrı bir yazılım katmanı istiyor.
Buna karşın mühendislik tarafı ciddi: sıfır çalışma zamanı bağımlılığı, PDF motorunun ve varsayılan fontların tek dosyada gömülü olması, adım adım ilerleme bildirimi ve tanılama kodları. Diyarbakır'da kendi ürününü geliştiren ekipler için denenmeye değer bir seçenek; üretime almadan önce kendi belgelerinizle test etmek şartıyla.
Bağlantılar
Aracın tanıtım ve deneme sayfası htpo.8bit.tr, kaynak kodu github.com/crypto-su/htpo adresinde. Kentteki teknoloji haberlerini teknoloji ve bilişim sayfalarında, güncel yerel gelişmeleri Diyarbakır Büyükşehir Belediyesi sayfasında bulabilirsiniz.
Kaynak: htpo README ve proje sayfası (htpo.8bit.tr, github.com/crypto-su/htpo; erişim 29.10.2026); npm paketi @8bit.tr/htpo. Görsel: diyarbakirnet.com tasarım.
