Karşılaştırmalar

gPdf vs jsPDF: tarayıcı PDF'i mi Edge API mi

jsPDF tarayıcıda hızlı ve hafif PDF üretimi için popülerdir; ancak CJK fontları, barkod doğruluğu, mobil bellek ve uyumluluk ihtiyacı mimari sınırı değiştirir.

Özet

jsPDF tarayıcıda üretilen hafif PDF'ler, prototipler, makbuzlar ve offline export için pratiktir. Üretim belgeleri CJK metin, taramaya hazır barkod, mobil stabilite veya uyumluluk çıktısı istediğinde trade-off değişir. gPdf font, barkod, layout ve PDF üretim işini kontrollü bir edge API'ye taşır; tarayıcı veri gönderir ve tamamlanmış PDF'i alır.

Yan yana

Kriter gPdf jsPDF Üstünlük
Render nerede çalışır
jsPDF client içinde çalıştığı için değerlidir; aynı özellik CPU ve bellek baskısını her kullanıcı cihazına taşır.
Edge'de Cloudflare Workers V8 isolate'ları Kullanıcının tarayıcı sekmesi gPdf
CJK font yönetimi
jsPDF'in standard PDF fontları UTF-8/CJK metni kapsamaz; ekipler uygun TTF data'yı yüklemek veya paketlemek zorundadır.
Simplified Chinese, Japanese ve Korean için bundled fallback Gerekli glyph'leri içeren custom font gerekir gPdf
CJK için frontend payload Web app bundle içinde CJK font asset'i yok Çoğu zaman çok MB'lı font dosyaları veya üretilmiş base64 font modülleri gPdf
Barkod üretim modeli 1D ve 2D formatlar için native `barcode` elementi Genellikle ayrı barkod library, SVG/canvas veya image pipeline ile birleştirilir gPdf
Barkod baskı doğruluğu
Kargo etiketleri, depo etiketleri ve biletlerde scanner ekrandaki görüntüye değil basılı geometriye, quiet zone'lara ve module size'a bakar.
PDF içinde vektör barlar ve modüller Tarayıcı barkodunun PDF'e nasıl çevrilip ölçeklendiğine bağlı gPdf
Mobil tarayıcı stabilitesi Ağır render işi sekmeden çıkarılır PDF üretimi, fontlar, görseller ve barkodlar client belleği tüketir gPdf
Offline support API'ye network access gerekir PWA veya local-only app içinde tamamen offline çalışabilir jsPDF
PDF/A ve e-invoicing PDF/A profilleri ve Factur-X/ZUGFeRD endpoint'i Arşiv veya hybrid e-fatura paketleri için doğal tercih değildir gPdf
Liste fiyatı Basic plan 5 ABD doları/ay ile 100.000 sayfa içerir; overage sayfa başına 0,00005 ABD dolarından başlar Open source library; library'nin kendisi için vendor faturası yok jsPDF
Production sahiplik maliyeti API fontları, barkod rendering'i, çıktı ortamını ve upgrade'leri sahiplenir Web app font paketleme, barkod conversion, mobil bellek ve tarayıcı QA'yı sahiplenir gPdf
En iyi default use case Yapılandırılmış production belgeleri: etiketler, faturalar, makbuzlar, biletler, ekstreler Küçük tarayıcı export'ları, prototipler, offline belgeler ve basit Latin metinli PDF'ler Eşit

Hangisini seçmeli

gPdf'yi tercih edin, eğer
  • Belgeleriniz Chinese, Japanese veya Korean metin içeriyor ve her tarayıcıya büyük font asset'i göndermek istemiyorsunuz.
  • Code 128, GS1-128, QR, DataMatrix, PDF417 veya diğer barkodlarla scan-critical etiket ya da bilet üretiyorsunuz.
  • Kullanıcılarınız sıkça mobil tarayıcı kullanıyor ve PDF üretimi sayfayla bellek için yarışmamalı.
  • PDF/A, Factur-X, ZUGFeRD veya audit-sensitive çıktı için tek kontrollü renderer gerekiyor.
  • Aynı PDF akışı frontend, backend, job ve entegrasyonlardan çağrılabilmeli.
jsPDF'i tercih edin, eğer
  • Server call olmadan tamamen offline tarayıcı veya PWA export gerekiyor.
  • PDF küçük, Latin-only ve tek kullanıcı tarafından ara sıra üretiliyor.
  • Prototip yapıyorsunuz ve JavaScript ile metin, çizgi ve görsel çizmenin en hızlı yolunu istiyorsunuz.
  • Data kısa süreli render request için bile kullanıcının cihazından ayrılmamalı.
  • Font paketleme, barkod encoding, ölçekleme ve tarayıcı bellek edge case'lerini sahiplenmeyi kabul ediyorsunuz.
Yetenekler

gPdf, yüksek hacimli faturalar, belgeler, gönderi etiketleri, barkodlar, PDF/A ve e-fatura çıktısı için tasarlanmış Edge-native bir JSON'dan PDF'ye API'dir. Küresel Edge ölçeğinde milisaniye sınıfı PDF oluşturma — öngörülebilir, production seviyesinde belge üretimi için optimize edilmiştir. Kendi PDF altyapınızı kurup işletmenin yerini alacak kadar düşük, altyapı düzeyinde fiyatlandırma.

Yetenekler

jsPDF hafif tarayıcı export’ları için çok iyidir

jsPDF popülerdir çünkü gerçek bir ürün problemini çözer: backend servisi çalıştırmadan tarayıcı içinde PDF oluşturmak. Bir developer metin, çizgi, görsel ve basit tablo çizebilir, sonra aynı sayfadan download başlatabilir. Prototipler, küçük admin ekranları, yerel makbuzlar ve offline PWA’ler için güçlü bir seçenektir.

Ürün sorusu, bu tarayıcı sınırının nerede doğru sınır olmaktan çıktığıdır. PDF müşteriler tarafından taranan, arşivlenen, email ile gönderilen veya başka bir sisteme teslim edilen iş belgesi olduğunda iş artık sadece “dosya çizmek” değildir. Font yönetimi, barkod doğruluğu, mobil stabilite, deterministik çıktı ve bazen PDF/A ya da e-fatura packaging’e dönüşür.

Aynı PDF çıktısı, farklı ürün sınırı

jsPDF ile frontend uygulaması renderer’dır. Her tarayıcı sekmesi library’yi, custom fontları, ara görselleri, barkod çıktısını ve final PDF byte’larını bellekte tutar. Library faturası sıfır kalır; ama production sorumluluğu her kullanıcı cihazına taşınır.

gPdf ile tarayıcı veya backend yapılandırılmış DocumentRequest ya da template_id + data request’i gönderir. gPdf render environment’ı, bundled fontları, barkod geometrisini ve edge’de binary PDF üretimini sahiplenir. Uygulama data ve şablon logic’inden sorumludur; PDF engine’den değil.

Ürün uyumu: offline export vs operasyonel belgeler

PDF yerel bir kolaylık özelliğiyse jsPDF seçin: küçük export butonu, basit Latin-only makbuz, dashboard snapshot veya ağ bağlantısı olmadan çalışması gereken PWA.

PDF operasyonel workflow’un parçasıysa gPdf seçin: kargo etiketleri, depo tag’leri, faturalar, biletler, ekstreler, gümrük formları ve sınır ötesi makbuzlar. Bu belgeler her cihazda aynı çıktıyı ister; o anki tarayıcı sekmesinin güvenle birleştirebildiği şeyi değil.

Maliyet modeli: ücretsiz library vs sahip olunan production yüzeyi

jsPDF’in açık fiyat avantajı vardır: library open source’tur ve tarayıcı CPU’su cloud faturasındaki bir satır kalemi değildir. Küçük bir internal feature için bu en ucuz yol olabilir.

Production cost kütüphane’nin çevresindeki işte görünür:

  • CJK destekli font dosyaları veya üretilmiş base64 font modülleri.
  • Barkod encoding ve conversion library’leri.
  • Tarayıcıya özgü memory ve download bug’ları.
  • Scanner ve termal printer için print QA.
  • Desktop, iOS Safari, Android WebView ve embedded browser’lar genelinde regression testleri.

gPdf bunu kullanım faturasına çevirir. Public Basic plan 100.000 sayfa için 5 ABD doları/ay’dan başlar; standard overage sayfa başına 0,00005 ABD dolarıdır. Bu vendor maliyetidir; ama her frontend bundle ve her kullanıcı cihazını production PDF service gibi davranmaya zorlama ihtiyacını kaldırır.

CJK maliyeti yalnızca dosya boyutu değildir

İlk sert sınır CJK metindir: Chinese, Japanese ve Korean.

jsPDF’in built-in standard PDF fontları basit Latin output için kullanışlıdır, ama her Unicode glyph’i kapsamaz. Belge CJK metin içerdiğinde uygulama bu glyph’leri gerçekten içeren bir fonta ihtiyaç duyar. Pratikte browser-side implementation’lar sıkça TTF dosyası paketler, bunu base64 JavaScript modülüne çevirir veya PDF üretmeden önce font data fetch eder.

Bu maliyet iki kez ödenir: önce daha büyük frontend payload olarak, sonra PDF üretilirken tarayıcı belleği olarak. Mobile’da aynı sekme web app’i, fontu, barkod buffer’larını, görselleri ve final PDF byte’larını aynı anda tutabilir.

gPdf bu işi server-side tutar. Tarayıcı structured JSON gönderir; renderer Latin, Greek, Cyrillic, CJK, Arabic, Devanagari, Bengali, Thai ve monospace text’i kapsayan bundled fontlar arasından seçer. 2 KB’lık order payload’u 12 MB’lık font delivery yoluna dönüşmek zorunda değildir.

Barkod maliyeti: encoding kolay, baskı güvenilirliği zordur

Lojistik, ecommerce, üretim, sağlık, ticketing ve retail workflow’larında barkod görünen metinden daha önemli olabilir. İnsan order number’ı okur; operasyon Code 128, GS1-128, QR, DataMatrix veya PDF417 okur.

jsPDF ile barkod üretimi genellikle ayrı bir ürün kararıdır. Ekipler jsPDF’i başka bir encoder ile birleştirir, barkodu SVG, canvas veya image olarak render eder, sonra sonucu PDF’e yerleştirir. Kupon QR code veya proof of concept için çalışır.

Basılı barkod operasyonel olarak kritik hale geldiğinde kırılganlaşır:

  • Canvas barkod yanlış resolution’da rasterized olabilir.
  • Ölçeklenmiş image barları, modülleri veya quiet zone’ları bulanıklaştırabilir.
  • Tarayıcı, CSS transform veya export yolu final physical size’ı değiştirebilir.
  • Farklı barkod formatları farklı library veya conversion path isteyebilir.
  • 203 DPI termal printer küçük sizing hatalarını hızlıca açığa çıkarır.

gPdf barkodları belge elementi olarak ele alır. Request type: "barcode", format, payload ve milimetre cinsinden physical size belirtir. Renderer desteklenen 1D ve 2D formatlar için PDF içine vektör barkod geometrisi yazar; böylece metin, shape, tablo, image ve barkodlar tek coordinate system içinde kalır.

Studio ve şablon iteration

jsPDF code-first’tür. Layout değişikliği genellikle JavaScript içinde drawing command’ları, pozisyonları, font registration’ı, image conversion’ı ve barkod placement’ı düzenlemek demektir.

gPdf aynı API-first workflow’u destekler, ama gPdf Studio ile PDF layout için ücretsiz görsel designer ekler. Ekipler metin, görsel, tablo, shape, header, footer ve barkod ekleyip sürükleyebilir; sonra tasarımı template_id + data üretimine bağlayabilir. Etiket, fatura veya makbuz formatı sık değiştiğinde ve PDF uzmanı olmayan kişiler layout’a katılmak zorunda olduğunda bu önemlidir.

Mobil tarayıcılar ağır PDF işi için yanlış yerdir

Client-side PDF generation ucuz görünür çünkü server faturası sıfırdır. Maliyet kullanıcı cihazına taşınır.

Desktop’ta bu sorun olmayabilir. Mobil tarayıcılarda production document sekmeyi zorlayabilir: CJK font data, base64 görseller, canvas buffer’ları, barkod image’ları, generated PDF byte’ları ve çalışan uygulama aynı anda bellek için yarışır. iOS Safari ve düşük bellekli Android cihazlar developer laptop’ından daha az toleranslıdır.

Üretimi gPdf’e offload etmek problemin şeklini değiştirir. Tarayıcı küçük JSON request oluşturur, binary response bekler ve bitmiş PDF’i indirir. Kullanıcı sekmesi artık font manager, barkod renderer, layout engine ve binary PDF writer olmak zorunda değildir.

jsPDF ne zaman hâlâ doğru seçimdir

jsPDF’i tutmak için güçlü nedenler vardır.

Kullanıcı offline export yapmak zorundaysa jsPDF daha iyi uyumdur. Data cihazdan hiç çıkmamalıysa tarayıcı-side generation daha temiz privacy boundary verir. Belge küçük, Latin-only ve arada bir kullanılıyorsa API getirmek operasyon maliyetine değmeyebilir. Prototipler ve internal tool’lar için jsPDF çoğu zaman tam olarak en hızlı yoldur.

Karar, çıktı operasyonel workflow’un parçası olduğunda değişir: taranması gereken kargo etiketi, arşivlenmesi gereken fatura, verify edilmesi gereken bilet veya CJK isimlerini doğru render etmesi gereken sınır ötesi order belgesi. O noktada “tarayıcıda PDF generate etmek“ten çok “aynı production PDF’i güvenilir generate etmek” önemlidir.

Geçiş şekli

Geçiş “bir function call’u değiştirmek” değildir. Imperative tarayıcı drawing’den yapılandırılmış belge request’ine geçmektir.

- // Before: browser-side drawing with jsPDF plus extra font/barcode setup.
- import { jsPDF } from "jspdf";
- import JsBarcode from "jsbarcode";
-
- const doc = new jsPDF({ unit: "mm", format: [100, 150] });
- // Load a CJK-capable TTF and register it before drawing CJK text.
- doc.addFileToVFS("NotoSansCJK-Regular.ttf", base64Font);
- doc.addFont("NotoSansCJK-Regular.ttf", "NotoSansCJK", "normal");
- doc.setFont("NotoSansCJK");
- doc.text("跨境订单 / Cross-border order", 6, 10);
-
- // Generate a barcode separately, then place it into the PDF.
- JsBarcode(canvas, "PDN0003507278", { format: "CODE128" });
- doc.addImage(canvas.toDataURL("image/png"), "PNG", 6, 72, 72, 20);
- doc.save("label.pdf");
+
+ // After: send one structured DocumentRequest to gPdf.
+ const res = await fetch("https://api.gpdf.com/api/v1/pdf/render", {
+   method: "POST",
+   headers: {
+     Authorization: `Bearer ${KEY}`,
+     "Content-Type": "application/json"
+   },
+   body: JSON.stringify({
+     settings: {
+       defaults: {
+         text: {
+           font_family: "NotoSans-Regular",
+           font_mode: "prefer",
+           font_size: 9,
+           color: "#111827"
+         }
+       }
+     },
+     pages: [{
+       width: 100,
+       height: 150,
+       elements: [
+         {
+           type: "text",
+           x: 6,
+           y: 8,
+           content: "跨境订单 / Cross-border order",
+           style: { width: 88, font_size: 12, font_weight: "bold" }
+         },
+         {
+           type: "barcode",
+           x: 6,
+           y: 70,
+           width: 72,
+           height: 18,
+           format: "code128",
+           content: "PDN0003507278",
+           barcode_text: { enabled: true, position: "bottom", offset: 1 }
+         },
+         {
+           type: "barcode",
+           x: 80,
+           y: 8,
+           width: 14,
+           height: 14,
+           format: "qrcode",
+           content: "https://track.example/PDN0003507278",
+           barcode_text: { enabled: false, position: "bottom" }
+         }
+       ]
+     }]
+   })
+ });
+ const pdf = await res.arrayBuffer();

Önemli değişim ownership’tır. jsPDF ile web app CJK font yolunu, barkod üretim yolunu, tarayıcı memory profile’ını ve export behavior’ını sahiplenir. gPdf ile uygulama data ve şablonu sahiplenir; edge renderer belge mechanics’ini sahiplenir.

İlgili PDF üretim senaryoları

PDF’in tarayıcıda mı yoksa kontrollü bir serviste mi üretilmesi gerektiğini değerlendiriyorsanız JSON to PDF API, fatura PDF API, kargo etiketi API, PDF içinde GS1 barkod, PDF/A API ve Factur-X API sayfaları aynı karar alanındadır.

FAQ

jsPDF ücretsiz mi?

Library’nin kendisi open source’tur. Production maliyeti çevredeki iştir: CJK fontları, barkod library’leri, tarayıcı QA, print QA ve belleği tükenen cihazlara destek.

gPdf tüm jsPDF use case’lerini değiştirir mi?

Hayır. Offline tarayıcı export ve local-only belgeler hâlâ jsPDF’in doğal alanıdır. gPdf, kontrollü renderer’ın API call’a değdiği production belgeleri içindir.

Barkod maliyeti neden ayrı anlatılıyor?

Çünkü ekranda iyi görünen barkod ölçekleme, rasterization veya termal baskı sonrası yine fail edebilir. Operasyonel belgeler sadece görünen pattern değil scanner reliability ister.

Ayrıca bakın