Karşılaştırmalar

gPdf vs QuestPDF: .NET belge üretimi için doğru sınır

QuestPDF güçlü bir C# PDF kütüphanesidir; gPdf hosted edge API'dir. Lisans, runtime sahipliği, şablon akışı, compliance, barkodlar ve hangi durumda hangisini seçeceğinizi karşılaştırın.

Özet

Güven sınırınıza uyan ürünü seçin. QuestPDF, PDF üretimini ve her belgenin içindeki veriyi .NET process'inizin içinde tutar; karşılığında fontları, barkodları, ölçeklemeyi ve compliance plumbing'i siz sahiplenirsiniz. gPdf üretimi her dilin çağırabildiği tek HTTP çağrısına çevirir; karşılığında belge verisini üçüncü taraf renderer'a gönderir ve uptime'ına bağımlı olursunuz. Yerel kontrol, veri gizliliği ve offline çalışma isteyen .NET uygulamaları genellikle QuestPDF'i; sayfa başı fiyatlanan, edge-hosted ortak PDF altyapısı isteyen polyglot ekipler genellikle gPdf'yi seçer.

Yan yana

Kriter gPdf QuestPDF Üstünlük
Ürün sınırı
Doğru seçim, bir servis satın almak mı yoksa render kod yolunu sahiplenmek mi istediğinize bağlıdır.
JSON Render, Template Render ve E-Invoice Render için hosted edge API. NuGet'ten kurulan ve uygulama kodundan çağrılan yerel C# / .NET kütüphanesi. Eşit
Birincil entegrasyon Node, Python, Go, .NET, Ruby, PHP, Java, worker'lar, job'lar veya frontend proxy'lerinden HTTPS POST. Strong typing, IDE desteği ve tanıdık .NET yapıları olan fluent C# API. Eşit
Runtime konumu Cloudflare Workers edge renderer; stack'inizde PDF servisi, font kurulumu veya deploy cluster'ı yoktur. .NET uygulamanız nerede çalışıyorsa orada çalışır; CPU, bellek, native/package dependency'ler, deploy, izleme ve ölçek ekibinizin sorumluluğundadır. gPdf
Barkod iş akışı 1D, 2D ve GS1 formatlarını (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode) kapsayan native `barcode` elementi ve yerleşik okunabilir metin yerleşimi. Resmi dokümanlar ZXing.Net entegrasyonunu gösterir — NuGet'ten ayrı kurulur ve SVG olarak render edilir; GS1 Application Identifier'lar ve FNC1 framing elle bağlanır. gPdf
Fontlar ve çok dilli metin Servisin sahip olduğu bundled fontlar; implicit auto selection, explicit `prefer` / `strict` modları ve script bazlı CJK fallback (KR, JP, SC). Caller'lar uygulamaya font dosyası paketlemez. Lato ile gelir; ortam, deploy dizini ve custom fontları yükleyip fallback zincirleri kurabilir. Ancak kendi dokümanları çoğu cloud deployment'ta az font bulunduğunu veya hiç font bulunmadığını söyler. gPdf
Üretim sırasında parola ve izinler
QuestPDF aynı encryption strength'leri ve user / owner password'leri destekler; fark, bunun render time'da inline değil üretilmiş dosya üzerinde post-generation adımı olmasıdır.
Render request içinde inline ayarlanır — `settings.security` aynı `/api/v1/pdf/render` çağrısında AES-128/256 encryption, open/owner password ve sekiz permission flag uygular. Belge önce üretilir, sonra ayrı bir Document Operation ile şifrelenir — `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Şablon iterasyonu gPdf Studio, production'ın `template_id + data` ile render ettiği aynı JSON şablonlarını tasarlar. QuestPDF Companion, C# belgeleri için hot-reload preview, hierarchy inspection, coordinate tools ve source navigation sağlar. Eşit
Ticari fiyatlandırma
QuestPDF fiyatlandırması 2026-06-02 tarihinde public licensing sayfaları üzerinden kontrol edildi. Yüksek hacimli .NET ekipleri lisans + hosting'i gPdf sayfa fiyatıyla karşılaştırmalıdır.
Basic ayda 5 ABD dolarıdır ve 100.000 sayfa içerir; overage 0,00005 ABD doları/sayfadan başlar ve tüm yüzeylerde aynı yayımlanmış sayfa başı hesap kullanılır. Yıllık brüt geliri 1 milyon ABD dolarının altında olan şirketler için Community MIT terms kapsamında ücretsizdir; perpetual commercial lisanslar Professional için 999 ABD doları (en fazla 10 geliştirici), Enterprise için 2.999 ABD doları (organizasyon geneli, geliştirici sayımı yok) olarak listelenir. Yerel vergi ve bir yıllık update dahildir. Eşit
Server ve deploy ücretleri Public API için deploy edilecek server fleet yoktur; kullanım plan ve sayfa üzerinden faturalandırılır. Commercial license terms unlimited projects, servers ve deployments sunar; altyapı müşterinin sorumluluğunda kalır. Eşit
PDF/A ve e-fatura Altı PDF/A profili (1b/2b/3b/4/2u/3u), PDF/UA-1 ve PDF/A-3b içinde EN 16931 CII XML üreten hosted Factur-X / ZUGFeRD endpoint'i; server-side validation ve EU / global data residency. Kod içinde güçlü PDF/A, PDF/UA-1 ve ZUGFeRD 2.1 / Factur-X desteği; veraPDF ve Mustang validation'ı siz bağlarsınız. Eşit
Belge verisi nereye gider
QuestPDF veriyi in-process tutar; gPdf iletir ama hiçbir şey saklamaz. Operational logs yalnızca HTTP status ve duration tutar, request body tutmaz.
Public API payload'u iletir, fakat renderer zero-retention çalışır — request JSON yalnızca render sırasında Cloudflare Workers isolate içinde yaşar (~4 ms typical), saklanmaz, loglanmaz veya training için kullanılmaz. EU / global data residency ve on-prem / private deployment maruziyeti daha da daraltır veya kapatır. Byte'lar in-process üretilir; belge verisi üçüncü tarafa gitmek için güven sınırınızı aşmaz. Eşit
Offline / air-gapped çalışma
QuestPDF sıfır kurulumla offline çalışır; gPdf aynı noktaya enterprise private deployment ile gelir.
Public API network access gerektirir; enterprise on-prem / private deployment, offline veya air-gapped çalışma için renderer'ı kendi altyapınızda çalıştırır. Lisans key, activation server ve runtime network call olmadan yerelde çalışır — license type honor-system temelinde tek satır kodla ayarlanır. Eşit
Mevcut PDF işlemleri Yapılandırılmış request'lerden yeni PDF üretir; mevcut dosyaları load, merge, decrypt veya edit etmez. Mevcut PDF'ler üzerinde Document Operations: merge, page reorder / reverse / filter, overlays, 40/128/256-bit encrypt ve decrypt, attachments, XMP metadata ve web linearization. QuestPDF
Grafikler ve veri görselleştirme
İkisi de veriyi plot'a çevirmek için charting library kullanır; QuestPDF bunu belge içinde render eder, gPdf ise sizin ürettiğiniz SVG / PNG'yi yerleştirir. Built-in charting, maps ve canvas tarafında QuestPDF öndedir.
`path` elementi (SVG path data) ve shapes ile vector art çizer veya herhangi bir charting library'nin ürettiği SVG / PNG chart'ı embed eder; built-in charting engine, map veya canvas API içermez. First-class chart integrations (ScottPlot, LiveCharts, Microcharts), Mapbox maps ve custom graphics için SkiaSharp canvas API. QuestPDF
En iyi varsayılan kullanım Ekipler arasında paylaşılan production iş belgeleri: etiketler, faturalar, makbuzlar, ekstreler, biletler ve e-faturalar. Yerel belge üretimini, tam code ownership ile ve runtime service dependency olmadan isteyen C# uygulamaları. Eşit

Hangisini seçmeli

gPdf'yi tercih edin, eğer
  • PDF generation tek bir .NET uygulamasının özelliği değil, birçok servis veya dil tarafından paylaşılan altyapı ise.
  • PDF rendering, font yönetimi, barkod geometrisi ve bölgesel ölçeklemeyi application stack'inizden çıkarmak istiyorsanız.
  • Şablon değişiklikleri C# code deployment yerine `template_id + data` revizyonları olarak ilerlemeli ise.
  • Her bölgede .NET PDF servisi deploy etmeden depolara, müşterilere veya backend job'lara yakın edge rendering istiyorsanız.
  • İlk production render öncesi commercial license procurement yerine yayımlanmış sayfa başı fiyat istiyorsanız.
QuestPDF'i tercih edin, eğer
  • Ürününüz .NET-first ise ve C# code belge layout'u için doğal tek doğru kaynaksa.
  • Belge verisi perimeter içinde kalmalıysa ve enterprise private gPdf deployment gündemde değilse.
  • Private render deployment kurmadan out-of-the-box offline veya air-gapped generation gerekiyorsa.
  • Generation latency-critical synchronous path üzerindeyse ve in-process call herhangi bir network round-trip'ten hızlı olmalıysa.
  • Aynı kütüphanede mevcut PDF'ler üzerinde merge, page extraction, overlays, decryption veya attachments gibi document operations gerekiyorsa.
  • Belge içinde charts, maps veya custom SkiaSharp graphics render ediyorsanız (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Community MIT terms için uygunsanız veya one-time perpetual license istiyor ve renderer'ı yerelde işletmeyi yük görmüyorsanız.
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

Ürün sınırı C# ise QuestPDF çok güçlüdür

QuestPDF saygılı bir karşılaştırmayı hak eder. C# geliştiricileri için modern bir PDF generation library’dir: fluent API, strong typing, geniş dokümantasyon, preview ve debugging için Companion App ve PDF SDK dünyasında alışılmadık kadar açık bir lisans modeli sunar.

Ürün sorusu “hangisi PDF oluşturabilir?” değildir. İkisi de oluşturabilir. Asıl soru PDF sınırının nerede yaşayacağıdır: layout, byte’lar ve lifecycle’ı sahiplenen bir .NET uygulamasının içinde mi, yoksa birçok ürün ve dilin çağırdığı bir altyapı servisi olarak mı?

Hızlı karar rehberi

  • C# belge için tek doğru kaynaksa, uygulama offline çalışmalıysa veya mevcut PDF’ler üzerinde yerel işlem gerekiyorsa QuestPDF seçin.
  • Tek bir PDF layer Node, Python, Go, .NET, job’lar ve bölgesel sistemlere aynı HTTP API ile hizmet vermeliyse gPdf seçin.
  • Layout değişiklikleri C# rebuild ve service redeploy değil, şablon revizyonu olmalıysa gPdf seçin.

Aynı belge ailesi, farklı sahiplik modeli

QuestPDF ile uygulama PDF generation’ın sahibidir. Bu gerçek bir güçlü yöndür: C# domain model’inize yakın kalır, yerelde çalışır ve debug edilir, runtime sırasında dış API çağrısı yoktur.

Değiş tokuş şudur: ekibiniz production yüzeyinin geri kalanını da sahiplenir:

  • Render için CPU ve bellek.
  • Her deploy ortamında font discovery ve fallback.
  • Barkod library entegrasyonu ve baskı QA.
  • Charting veya custom graphics entegrasyonları için native package ve deploy işleri.
  • İzleme, retry ve failure handling.
  • Kullanıcılar veya depolar global ise bölgesel deploy.
  • Belge layout’u her değiştiğinde rollout.

gPdf ile bu yüzey dışarı taşınır: uygulama bir DocumentRequest veya template_id + data gönderir; servis renderer’ı, edge runtime’ı, fontları, barkod primitive’lerini, PDF/A çıktısını ve e-fatura packaging’i sahiplenir. Her ayrıntıyı C# içinde tutmak istiyorsanız bu daha az caziptir; PDF generation herhangi bir stack’ten çağrılabilen utility layer olmalıysa daha caziptir.

Hosted API’nin dürüstçe yanıtlaması gereken üç trade-off

Çoğu “library vs API” anlatısı bir .NET mimarının önce sorduğu üç soruyu atlar. Adil karşılaştırma bunları açıkça söyler.

1. Belge verisi nereye gider. Bu sayfa büyük ölçüde faturalar, ekstreler ve e-faturalar hakkındadır; yani isim, adres, vergi numarası ve tutar içeren belgeler. QuestPDF ile bu byte’lar kendi process’inizde üretilir ve dışarı çıkmaz. Public gPdf API payload’u renderer’a iletir, ancak renderer zero-retention çalışır: request JSON yalnızca render sırasında Cloudflare Workers V8 isolate içinde tutulur (tipik olarak ~4 ms) ve response tamamlandığında serbest bırakılır. Saklanmaz, loglanmaz, sampled edilmez veya training için kullanılmaz; operational logs HTTP status ve duration ile sınırlıdır (security, DPA). EU / global data-residency seçimi ve enterprise on-prem / private deployment maruziyeti daha da daraltır veya kapatır. Buna rağmen sıfır kurulumla in-process generation, finance veya public-sector ekibinin QuestPDF seçmesi için meşru, bazen de belirleyici, bir nedendir.

2. Failure mode. Bir library’nin düşebilecek üçüncü tarafı yoktur; generation ancak zaten sahip olduğunuz altyapıda fail olabilir. Hosted API kontrol etmediğiniz bir availability dependency ekler. gPdf’yi doğru benimseme yolu render çağrılarını diğer external call’lar gibi ele almaktır: timeout, retry, queue ve ideal olarak degraded-mode fallback. Belge üretimi kritik synchronous path üzerindeyse, “kendimiz işletelim” ile “vendor uptime’ına bağımlı olalım” kararını açıkça tartın.

3. Latency profile. In-process generation network olmayan bir function call’dur. Hosted call network round-trip’tir. Batch ve async job’larda bu çoğu zaman gürültüdür. “Kullanıcı tıkladı, PDF hemen görünmeli” senaryosunda in-process yapısal olarak daha hızlıdır. gPdf’in edge PoP’ları hop’u küçültür, ama yine de TLS ve round-trip vardır; QuestPDF ise method call’dur.

Bunların hiçbiri gPdf’yi yanlış seçim yapmaz. Sadece ne zaman doğru seçim olduğunu tanımlar: document data process dışına çıkabiliyorsa, flow’lar network hop’u tolere ediyorsa ve ekip renderer fleet işletmek yerine vendor uptime’ına bağımlı olmayı tercih ediyorsa.

Lisanslama ve fiyat modeli

QuestPDF’in public licensing sayfası, commercial license’ın yalnızca yıllık brüt geliri 1 milyon ABD dolarının üzerinde olan şirketler için gerektiğini söyler. Community tier; uygun bireyler, open-source projeler, non-profit’ler ve bu gelir eşiğinin altındaki şirketler için MIT terms kapsamında ücretsizdir. Aynı public sayfa iki perpetual commercial tier listeler: Professional en fazla 10 geliştirici için 999 ABD doları artı yerel vergi, Enterprise ise geliştirici sayımı olmadan organizasyon geneli için 2.999 ABD doları artı yerel vergi. İkisi de bir yıl update ve unlimited projects, servers ve deployments içerir; lisans alınan son version için sona ermez.

Enforcement modeli de alışılmadık kadar hafiftir. Lisans tek satırla ayarlanır: QuestPDF.Settings.License = LicenseType.Community;. Lisans key yoktur, activation server yoktur ve QuestPDF’in kendi configuration sayfasına göre network call veya makineden veri çıkışı yoktur. Bu honor-system modelidir: uygun olduğunuz tier’ı seçersiniz. Belge başına vendor bill yoktur; ücretli lisans tamamen offline dahil her yerde çalışır.

gPdf rendering servisini doğrudan fiyatlar. Public Basic plan 100.000 sayfa için 5 ABD doları/aydan başlar; overage 0,00005 ABD doları/sayfadan başlar. Bu bir vendor bill’dir, ama PDF generation işletme projesini de ortadan kaldırır: render cluster yok, NuGet deploy yolu yok, bölgesel warm pool yok, her uygulama için font package yok ve patch edilecek PDF servisi yok.

Bu yüzden maliyet karşılaştırması “999 ABD doları vs 5 ABD doları” değildir; lisans küçük kalemdir. Gerçek karşılaştırma şudur:

QuestPDF total = license (one-time) + your hosting + your engineer-time + on-call
gPdf total     = page bill (infrastructure, fonts, scaling, and edge included)

Public per-page math ile gPdf overage 1.000 sayfa başına 0,05 ABD dolarıdır (1 milyon sayfa için 50 ABD doları, 10 milyon sayfa için 500 ABD doları). Tek seferlik 2.999 ABD doları Enterprise lisansı bu faturayla ancak yaklaşık 60 milyon sayfa civarında başa baş olur. Üstelik bu hesap QuestPDF’in hosting ve engineer-month maliyetlerini yok sayar; bunlar, render altyapısını zaten çok ucuza işletmiyorsanız gerçek crossover’ı gPdf lehine çok daha ileri taşır. Pratik kural: library’yi kullanmak için render servisi build and staff etmeniz gerekiyorsa, gPdf total cost tarafında per-page bill lisansı yakalamadan çok önce kazanır; bu altyapı zaten varsa ve size neredeyse bedavaysa, perpetual license ölçekte kazanır.

Geliştirme iş akışı: Fluent C# vs şablonlar

QuestPDF’in fluent API’si geliştiriciler belge şeklini sahiplendiğinde iyi uyar. Strong typing, method chain’ler, reusable C# component’ler, IDE refactor’ları ve Companion App, PDF application codebase’in parçası olduğunda anlamlıdır.

gPdf farklı bir iş akışına uyar. Geliştiriciler JSON’u doğrudan yazabilir, fakat production sistemler genellikle şablonlara yönelir. Designer, operatör veya engineer layout’u gPdf Studio içinde düzenler. Onaylanan layout şablona dönüşür; backend template_id + data ile render etmeye devam eder.

Belge sık değişiyorsa bu fark önemlidir. Carrier label, fatura, packing slip veya ekstre layout’u değiştiğinde gPdf runtime’ı sabit tutup yalnızca şablonu hareket ettirebilir. QuestPDF’de layout C# code olduğu için normal yol code change, test, build, deploy ve rollback planıdır.

Hiçbir iş akışı evrensel olarak daha iyi değildir: QuestPDF document-as-code isteyen C# geliştiricileri için; gPdf ise sistemler arasında paylaşılan operational şablonlar için optimize edilmiştir.

Compliance: iki ürün de ciddi

Bu, gPdf’in “rakipte compliance yok” diyerek kazandığı bir karşılaştırma değildir. QuestPDF’in güncel public material’ı PDF/A, PDF/UA-1 ve UN/CEFACT Cross Industry Invoice (CII) standardı üzerine kurulu ZUGFeRD 2.1 / Factur-X example ile EN 16931 e-invoicing dahil güçlü standards support listeler. Bu example PdfA = true ayarlar, factur-x.xml payload’unu AddAttachment() ile embed eder, document’ı XMP metadata ile genişletir ve sonucu veraPDF (PDF/A-3b için) ve Mustang Project (ZUGFeRD için) ile validate eder. Eksiksiz ve dürüst bir recipe’dir; pipeline’ınız her adımın sahibidir.

gPdf aynı standartları API contract olarak paketler. JSON Render settings.profile üzerinden altı PDF/A profili (1b, 2b, 3b, 4, 2u, 3u) ve PDF/UA-1 sunar; Template Render aynı document model’i yeniden kullanır; E-Invoice Render ise embedded EN 16931 CII XML içeren Factur-X / ZUGFeRD PDF/A-3b packages üreten dedicated POST /api/v1/e-invoice/render endpoint’i sağlar. QuestPDF recipe’inden fark, servisin sizin için yaptığı iştir: gPdf PDF/A-3b ve e-fatura validation’ı server-side çalıştırır, synchronous inline veya polled object delivery destekler ve EU ya da global data residency seçimini kendinizin kurup işlettiği adımlar yerine request settings olarak sunar. Validation kendi .NET pipeline’ınızda yaşamalıysa QuestPDF; birçok sistemin paylaştığı hosted contract olmalıysa gPdf uygundur.

Fontlar ve barkodlar: asıl karşılaştırma entegrasyon emeği

QuestPDF güçlü bir font modeline sahiptir. Default olarak Lato 2.015 ile gelir, system ve deployment-directory fontlarını auto-load eder, FontManager ile custom font kaydetmenizi sağlar ve fallback chain destekler. Bu geliştiricilere kontrol verir. Fakat aynı dokümantasyon yakalayıcı noktayı açıkça söyler: “in most cloud deployments, few or no fonts are available, which may lead to unexpected results,” ve environment fontlarını kapatıp ihtiyacınız olanları açıkça register etmenizi önerir. Başka deyişle container veya serverless target’ta font ortamını planlamak, paketlemek ve test etmek sizdedir; missing glyph placeholder olabilir veya CheckIfAllTextGlyphsAreAvailable açıksa exception fırlatabilir.

gPdf fontları servis sınırının parçası yapar. Renderer multi-script set içerir: Latin, Greek, Cyrillic, Arabic, Hebrew, Bengali, Tamil, Thai, Vietnamese, monospace ve Noto KR / JP / SC’ye script bazlı fallback içeren CJK. Sessiz font seçimleri implicit auto selection ile, explicit seçimler prefer veya strict ile çözülür. Caller CJK font göndermez, .NET app içinde Noto asset register etmez veya her deploy target için fallback ayarlamaz. Veri gönderir; font ortamının sahibi renderer’dır ve her bölgede aynıdır.

Barkod karşılaştırması da benzerdir. QuestPDF barcode docs, vector SVG olarak render edilen ZXing.Net ile sağlam bir yaklaşım gösterir ve ZXing.Net’in QuestPDF package içinde olmadığını açıkça belirtir. NuGet’ten kurar ve bağlarsınız:

// QuestPDF: add the separate ZXing.Net package, encode, render to SVG, embed.
//   dotnet add package ZXing.Net
var writer = new ZXing.BarcodeWriterSvg {
    Format  = ZXing.BarcodeFormat.CODE_128,
    Options = new ZXing.Common.EncodingOptions { Width = 320, Height = 80 }
};
string svg = writer.Write("INV-2026-001").Content;
container.Svg(svg);
// GS1-128 with Application Identifiers and FNC1 framing is hand-wired on top.

gPdf tarafında barcode generation first-class schema element’tir. Request formatı, content’i, physical size’ı ve optional human-readable line’ı belirtir. GS1 formatları native olduğu için Application Identifier’lar doğrudan content içine gider:

{
  "type": "barcode",
  "format": "gs1_128",
  "content": "(01)00012345678905(21)SN12345",
  "x": 12, "y": 60, "width": 80, "height": 18,
  "barcode_text": { "enabled": true, "position": "bottom" }
}

Tek bir .NET app için ZXing.Net kurup çıktıyı test etmek kolay olabilir. Birden fazla servis ve şablon için, özellikle GS1-128, SSCC, GTIN, GS1 DataMatrix veya human-readable interpretation line içeren GS1 QR isteyen lojistik ve perakende iş yüklerinde, barkod davranışını document API içine taşımak aynı ZXing wiring’i her serviste tekrar kurmaktan daha kolaydır.

QuestPDF’nin açıkça kazandığı yerler

Offline çalışma ve document data’yı perimeter içinde tutmanın ötesinde, PDF code’un ürünün parçası olduğu ve ekibin render yolunu inspect, extend veya own etmesi gereken durumlarda QuestPDF, gPdf kapsamının net dışında kalan iki alanda güçlüdür:

  • Mevcut PDF’ler üzerinde operations. QuestPDF existing file’ları load edip merge, select / reorder / reverse / filter pages, apply overlays, add attachments, set XMP metadata, web delivery için linearize yapabilir ve 40/128/256-bit security ile hem encrypt hem decrypt edebilir. gPdf kendi ürettiği PDF’lere password-protect ve permission-gate uygulayabilir, fakat kendisinin oluşturmadığı dosyaları open, merge veya decrypt etmez.
  • Charts, maps ve custom graphics. QuestPDF charting libraries (ScottPlot, LiveCharts, Microcharts) entegre eder, Mapbox maps embed eder ve arbitrary 2D drawing için SkiaSharp canvas sunar. gPdf path elementiyle (SVG path data) vector art çizebilir veya upstream üretilmiş SVG / PNG chart embed edebilir; fakat built-in charting engine, maps veya canvas yoktur. Data-driven charting belgenin merkezindeyse tooling QuestPDF tarafında kalır.

gPdf’nin açıkça kazandığı yerler

gPdf, organizasyon her product team’in kendi PDF servisini sahiplenmesini istemediğinde kazanır: polyglot stack’ler, global workflow’lar ve structured data’dan belge render eden, code’dan bağımsız değişen şablonlar kullanan ERP / OMS / WMS / ecommerce / fintech / ticketing sistemleri. Bu ortamlarda local library çoğu zaman ucuz başlar ve sonra fleet’e dönüşür: dil başına bir servis, bölge başına bir deploy yolu, container başına bir font planı, ekip başına bir barkod regression seti. gPdf bu fleet’i tek HTTP contract’a dönüştürür.

Serverless sınırı en net gösterir. AWS Lambda, Cloud Run veya Azure Functions üzerinde QuestPDF yine application içinde çalışır: ekibiniz .NET runtime’ı, fontları, native dependency’leri ve peak PDF işi için yeterli CPU / memory’yi paketler; cold start’ları da sahiplenir. gPdf zaten render servisidir: function küçük bir template_id + data request’ini edge’e POST eder ve PDF byte’larını geri alır; warm tutulacak renderer veya ölçeklenecek per-region worker yoktur.

Migration shape

QuestPDF’den gPdf’ye geçiş line-for-line rewrite değildir. Bir boundary change’dir: PDF’i oluşturan C# code ya JSON document request’e ya da published template’e dönüşür.

Before / after — the C# document-build call collapses to one HTTP POST (click to expand)
- // Before: generate the PDF inside a .NET application.
- Document.Create(container =>
- {
-     container.Page(page =>
-     {
-         page.Size(PageSizes.A4);
-         page.Margin(30);
-         page.Header().Text("Invoice").FontSize(24).SemiBold();
-         page.Content().Column(column =>
-         {
-             column.Item().Text($"Invoice number: {invoice.Number}");
-             column.Item().Text($"Total: {invoice.Total:C}");
-         });
-     });
- })
- .GeneratePdf("invoice.pdf");
+
+ // After: render through the shared gPdf template from C#.
+ using System.Net.Http.Headers;
+ using System.Net.Http.Json;
+
+ using var client = new HttpClient();
+ client.DefaultRequestHeaders.Authorization =
+     new AuthenticationHeaderValue("Bearer", key);
+
+ var response = await client.PostAsJsonAsync(
+     "https://api.gpdf.com/api/v1/template-render",
+     new {
+         template_id = "invoice-v2",
+         data = new {
+             invoice_number = invoice.Number,
+             total = invoice.Total,
+             currency = invoice.Currency
+         }
+     });
+
+ response.EnsureSuccessStatusCode();
+ byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();

Bu sınır taşındıktan sonra layout değişiklikleri application deployment yerine template revision olabilir. Application business data ve workflow kararlarının sahibi olmaya devam eder; rendering’i gPdf sahiplenir.

Fiyatlandırma ve kaynak notu

Bu sayfadaki QuestPDF bilgileri 2026-06-02 tarihinde resmi QuestPDF kaynakları üzerinden kontrol edildi: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management ve ZUGFeRD example. Fiyatlandırma ve feature sayfaları değişebilir; procurement ekipleri satın alma kararı vermeden önce vendor sayfasını yeniden kontrol etmelidir. QuestPDF ve ilgili markalar kendi sahiplerine aittir; bu karşılaştırma onlar tarafından onaylanmış değildir.

İlgili PDF generation senaryoları

QuestPDF ve gPdf karşılaştıran ekipler genellikle .NET için hosted PDF API, fatura PDF generation, kargo etiketi PDF API, GS1-128 barkod API, PDF/A API, ZUGFeRD API ve Factur-X API gibi senaryoları da değerlendirir. Yerel C# code tek doğru kaynak olduğunda QuestPDF güçlüdür; birçok dilin aynı render layer’ı paylaşması gerektiğinde gPdf daha doğal sınırdır.

FAQ

gPdf QuestPDF’in yerini alır mı?

Hayır. gPdf, yapılandırılmış iş belgeleri için PDF generation service işletme ihtiyacının yerini alır. PDF’in application içinde üretilmesi gerektiğinde QuestPDF güçlü bir yerel C# library olmaya devam eder.

QuestPDF ücretsiz mi?

QuestPDF’in public licensing sayfası Community tier’ın uygun bireyler, open-source projeler, non-profit’ler ve yıllık brüt geliri 1 milyon ABD dolarının altındaki şirketler için MIT terms kapsamında ücretsiz olduğunu söyler. Bu eşiğin üzerindeki şirketler perpetual commercial license almalıdır: en fazla 10 geliştirici için 999 ABD doları artı yerel vergi ile Professional veya organizasyon geneli için 2.999 ABD doları artı yerel vergi ile Enterprise. Her biri bir yıl update içerir.

gPdf, QuestPDF gibi charts veya maps üretebilir mi?

Built-in engine olarak hayır. QuestPDF charting libraries (ScottPlot, LiveCharts, Microcharts), Mapbox maps ve belge içinde render eden SkiaSharp canvas entegre eder. gPdf yine de SVG path data kabul eden path elementi ve shapes ile vector chart çizebilir veya herhangi bir charting library tarafından üretilen SVG / PNG’yi image olarak embed edebilir. Fark şudur: QuestPDF chart’ı in-process hesaplayıp render eder; gPdf ile chart art’ını siz üretirsiniz ve gPdf yerleştirir. Data-driven charting veya maps belgenin merkezindeyse QuestPDF daha uygundur.

Hangi ürün daha ucuz?

Sınıra bağlıdır. QuestPDF, Community terms için uygun olan veya render altyapısını zaten işleten .NET ekipleri için daha ucuz olabilir. Alternatif, birden fazla product veya region için PDF servisi build, host ve maintain etmekse gPdf daha ucuz olabilir.

gPdf belge verilerimi saklar veya loglar mı?

Hayır. Gönderdiğiniz JSON ve gPdf’in döndürdüğü PDF saklanmaz. Her request tek bir Cloudflare Workers V8 isolate içinde render edilir, yalnızca render süresince memory’de tutulur (tipik olarak yaklaşık 4 ms) ve response stream tamamlandığında serbest bırakılır. gPdf DocumentRequest içeriğini retain, log, sample veya train etmez. Operational logs 30 gün boyunca yalnızca HTTP status ve duration tutar; request body içermez. Security policy, privacy policy ve DPA sayfalarına bakın. Hiç veri iletemeyen iş yükleri için on-prem / private deployment veriyi perimeter içinde tutar.

QuestPDF internet erişimi olmadan çalışabilir mi?

Evet. QuestPDF’in license configuration sayfası lisans key veya activation server olmadığını ve hesaplamaların yerel yapıldığını söyler. Bu, QuestPDF seçmek için en net nedenlerden biridir.

gPdf arbitrary C# QuestPDF layout’larını render edebilir mi?

Hayır. gPdf C# layout code çalıştırmaz. Migration, document shape’i gPdf JSON request’e veya saved gPdf template’e dönüştürmek demektir.