Vergleiche

gPdf vs QuestPDF für .NET-Dokumentgenerierung

QuestPDF ist eine sehr gute C#-PDF-Bibliothek. gPdf ist eine gehostete Edge-API. Vergleichen Sie Lizenzierung, Laufzeitverantwortung, Vorlagenablauf, Compliance, Barcodes und wann welches Produkt besser passt.

Kurzfassung

Wählen Sie nach Vertrauensgrenze. QuestPDF hält Dokumentgenerierung und Daten im .NET-Prozess; dafür besitzt Ihr Team Fonts, Barcodes, Skalierung und Compliance-Integration. gPdf macht Generierung zu einem HTTP-Aufruf aus jeder Sprache; dafür senden Sie Dokumentdaten an einen Drittanbieter-Renderer und hängen an dessen Verfügbarkeit. Eine .NET-App mit Fokus auf lokale Kontrolle, Datenschutz oder Offline-Betrieb wählt meist QuestPDF. Polyglotte Teams, die Edge-gehostete PDF-Infrastruktur mit Seitenpreisen wollen, wählen meist gPdf.

Seite an Seite

Kriterium gPdf QuestPDF Vorteil
Produktgrenze
Die richtige Wahl hängt davon ab, ob Sie einen Service kaufen oder den Rendering-Codepfad selbst besitzen wollen.
Gehostete Edge-API für JSON Render, Template Render und E-Invoice Render. Lokale C# / .NET-Bibliothek, installiert über NuGet und aus Anwendungscode aufgerufen. Gleichstand
Primäre Integration HTTPS-POST aus Node, Python, Go, .NET, Ruby, PHP, Java, Workern, Jobs oder Frontend-Proxys. Fluent C# API mit starker Typisierung, IDE-Unterstützung und vertrauten .NET-Konstrukten. Gleichstand
Platzierung der Laufzeit Cloudflare Workers Edge-Renderer; kein PDF-Service, Font-Setup oder Deployment-Cluster in Ihrem Stack. Läuft dort, wo Ihre .NET-App läuft; Ihr Team besitzt CPU, Speicher, native Paketabhängigkeiten, Deployment, Monitoring und Skalierung. gPdf
Barcode-Ablauf Natives `barcode`-Element für 1D-, 2D- und GS1-Formate (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode), inklusive Platzierung menschenlesbarer Texte. Die offiziellen Dokumente integrieren ZXing.Net, separat über NuGet installiert und als SVG gerendert; GS1 Application Identifiers und FNC1-Framing werden manuell verdrahtet. gPdf
Fonts und mehrsprachiger Text Service-eigene gebündelte Fonts mit impliziter Auto-Auswahl, expliziten `prefer` / `strict`-Modi und CJK-Fallback je Schriftsystem (KR, JP, SC); Aufrufer bündeln keine Font-Dateien in Anwendungen. Bringt Lato mit und kann Environment-, Deployment-Verzeichnis- und Custom-Fonts mit Fallback-Ketten laden; die eigenen Dokumente warnen aber, dass in den meisten Cloud-Deployments nur wenige oder gar keine Fonts verfügbar sind. gPdf
Passwort und Berechtigungen bei der Generierung
QuestPDF unterstützt dieselben Verschlüsselungsstärken und User-/Owner-Passwörter, aber als Nachbearbeitung der gerenderten Datei statt inline zur Render-Zeit.
Inline in der Render-Anfrage: `settings.security` setzt AES-128/256-Verschlüsselung, Öffnungs- und Owner-Passwörter sowie acht Permission-Flags im selben `/api/v1/pdf/render`-Aufruf. Erst generieren, danach in einer separaten Document Operation verschlüsseln: `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Vorlageniteration gPdf Studio gestaltet dieselben JSON-Vorlagen, die Produktion über `template_id + data` rendert. QuestPDF Companion bietet Hot-Reload-Preview, Hierarchie-Inspektion, Koordinatenwerkzeuge und Source-Navigation für C#-Dokumente. Gleichstand
Kommerzieller Preis
QuestPDF-Preise wurden am 2026-06-02 gegen öffentliche Lizenzseiten geprüft. .NET-Teams mit hohem Volumen sollten Lizenz + Hosting mit gPdf-Seitenpreisen vergleichen.
Basic kostet 5 USD/Monat und enthält 100.000 Seiten; Mehrverbrauch ab 0,00005 USD pro Seite, mit derselben öffentlich sichtbaren Seitenlogik auf jeder Oberfläche. Unter Community MIT-Bedingungen kostenlos unter 1 Mio. USD Jahresumsatz; permanente kommerzielle Lizenzen listen Professional mit 999 USD (bis zu 10 Entwickler) und Enterprise mit 2.999 USD (organisationsweit, ohne Entwicklerzählung), plus lokale Steuer, jeweils mit einem Jahr Updates. Gleichstand
Server- und Deployment-Kosten Für die öffentliche API ist keine Serverflotte zu deployen; Nutzung wird nach Plan und Seiten abgerechnet. Kommerzielle Lizenzbedingungen bewerben unbegrenzte Projekte, Server und Deployments; Infrastruktur bleibt kundeneigen. Gleichstand
PDF/A und E-Invoice 6 PDF/A-Profile (1b/2b/3b/4/2u/3u), PDF/UA-1 und ein gehosteter Factur-X / ZUGFeRD-Endpunkt mit EN 16931 CII XML in PDF/A-3b, serverseitiger Validierung und EU / globaler Datenresidenz. Starke PDF/A-, PDF/UA-1- und ZUGFeRD 2.1 / Factur-X-Unterstützung im Code; veraPDF und Mustang-Validierung verdrahten Sie selbst. Gleichstand
Wohin Dokumentdaten gehen
QuestPDF hält Daten in-process; gPdf überträgt sie, speichert aber nichts. Operative Logs enthalten nur HTTP-Status und Dauer, nie Anfragekörper.
Die öffentliche API überträgt den Payload, aber der Renderer bewahrt nichts auf: Request-JSON lebt nur während des Renders in einem Cloudflare Workers V8-Isolate (typisch ~4 ms), wird nie gespeichert, geloggt oder für Training genutzt. EU / globale Datenresidenz und On-Prem / Private Deployment verkleinern oder schließen die Exposition weiter. Bytes entstehen in-process; Dokumentdaten verlassen Ihre Vertrauensgrenze nicht in Richtung Drittanbieter. Gleichstand
Offline- / air-gapped Betrieb
QuestPDF läuft offline ohne Setup; gPdf erreicht dieselbe Grenze über ein privates Enterprise-Deployment.
Die öffentliche API benötigt Netzwerkzugang; Enterprise On-Prem / Private Deployment lässt den Renderer in Ihrer eigenen Infrastruktur für offline oder air-gapped Betrieb laufen. Läuft lokal ohne Lizenzschlüssel, Aktivierungsserver oder Laufzeit-Netzwerkaufrufe; der Lizenztyp wird in einer Codezeile nach dem Ehrensystem gesetzt. Gleichstand
Operationen auf bestehenden PDFs Generiert neue PDFs aus strukturierten Requests; öffnet, führt zusammen, entschlüsselt oder editiert keine bestehenden Dateien. Document Operations auf bestehenden PDFs: zusammenführen, Seiten neu ordnen / umkehren / filtern, Overlays, 40/128/256-Bit-Verschlüsselung und -Entschlüsselung, Attachments, XMP-Metadaten und Web-Linearization. QuestPDF
Charts und Datenvisualisierung
Beide brauchen eine Charting-Bibliothek, um Daten in einen Plot zu verwandeln; QuestPDF rendert ihn im Dokument, gPdf platziert das von Ihnen erzeugte SVG / PNG. QuestPDF führt bei eingebauten Charts, Karten und Canvas.
Zeichnet Vektorgrafik über das `path`-Element (SVG path data) und Shapes, oder bettet ein SVG / PNG-Chart aus einer beliebigen Charting-Bibliothek ein; keine eingebaute Diagramm-Engine, keine Karten, keine Canvas-API. Erstklassige Chart-Integrationen (ScottPlot, LiveCharts, Microcharts), Mapbox-Karten und eine SkiaSharp-Canvas-API für eigene Grafiken. QuestPDF
Bester Standardfall Produktive Geschäftsdokumente, die Teams gemeinsam nutzen: Labels, Rechnungen, Belege, Kontoauszüge, Tickets und E-Invoices. C#-Anwendungen, die lokale Dokumentgenerierung mit vollständigem Code-Eigentum und ohne Laufzeit-Service-Abhängigkeit wollen. Gleichstand

Wann was wählen

gPdf wählen, wenn
  • PDF-Generierung ist Infrastruktur, die mehrere Services oder Sprachen teilen, nicht ein Feature einer einzelnen .NET-Anwendung.
  • Sie möchten PDF-Rendering, Font-Management, Barcode-Geometrie und regionale Skalierung aus Ihrem Anwendungs-Stack entfernen.
  • Ihr Team will Layout-Änderungen als `template_id + data`, nicht als C#-Code-Deployments.
  • Sie brauchen Edge-Rendering nahe an Lagern, Kunden oder Backend-Jobs, ohne in jeder Region einen .NET-PDF-Service zu deployen.
  • Sie bevorzugen einen veröffentlichten Seitenpreis und keine kommerzielle Lizenzbeschaffung vor dem ersten Produktionsrender.
QuestPDF wählen, wenn
  • Ihr Produkt ist .NET-first und C#-Code ist die natürliche maßgebliche Quelle für Dokumentlayout.
  • Dokumentdaten müssen in Ihrem Perimeter bleiben, und ein Enterprise Private Deployment von gPdf ist keine Option.
  • Sie brauchen offline oder air-gapped Generierung ab Werk, ohne privates Render-Deployment einzurichten.
  • Generierung liegt auf einem latenzkritischen synchronen Pfad, auf dem ein In-Process-Aufruf jeden Netzwerk-Roundtrip schlägt.
  • Sie brauchen Operationen auf bestehenden PDFs - Zusammenführen, Seitenauszug, Overlays, Entschlüsselung oder Attachments - in derselben Bibliothek.
  • Sie rendern Charts, Karten oder eigene SkiaSharp-Grafiken im Dokument (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Sie sind für Community MIT-Bedingungen berechtigt oder wollen eine einmalige permanente Lizenz, und lokaler Renderer-Betrieb ist keine Last.
Funktionen

gPdf ist eine JSON-zu-PDF-API am Edge für hochvolumige Rechnungen, Dokumente, Versandetiketten, Barcodes, PDF/A und E-Rechnungen. PDF-Rendering im Millisekundenbereich auf globaler Edge-Infrastruktur — optimiert für vorhersehbare, industrietaugliche Dokumentenerzeugung. Infrastruktur-Level-Preise, niedrig genug, um den Aufbau und Betrieb Ihrer eigenen PDF-Infrastruktur zu ersetzen.

Funktionen

QuestPDF ist stark, wenn C# die Produktgrenze ist

QuestPDF verdient einen respektvollen Vergleich. Es ist eine moderne PDF-Generierungsbibliothek für C#-Entwickler, mit Fluent API, starker Typisierung, umfangreicher Dokumentation, Companion App für Vorschau und Debugging sowie einem Lizenzmodell, das für ein PDF-SDK ungewöhnlich klar ist.

Die Produktfrage lautet nicht: “Welches Tool kann ein PDF erstellen?” Beide können das. Die nützliche Frage lautet, wo die PDF-Grenze liegen soll: innerhalb einer .NET-Anwendung, die Layout, Bytes und Lebenszyklus besitzt, oder als Infrastrukturservice, den mehrere Produkte und Sprachen aufrufen.

Schnelle Entscheidungshilfe

  • Wählen Sie QuestPDF, wenn C# die maßgebliche Dokumentquelle ist, die App offline laufen muss oder Sie lokale Operationen auf bestehenden PDFs brauchen.
  • Wählen Sie gPdf, wenn eine PDF-Schicht Node, Python, Go, .NET, Jobs und regionale Systeme über dieselbe HTTP-API bedienen soll.
  • Wählen Sie gPdf, wenn Layout-Änderungen Vorlagenrevisionen sein sollen, nicht C#-Rebuilds und Service-Redeployments.

Gleiche Dokumentfamilie, anderes Eigentumsmodell

Mit QuestPDF besitzt die Anwendung die PDF-Generierung. Das ist eine echte Stärke: C# bleibt nah am Domänenmodell, läuft und debuggt lokal, ohne Laufzeitaufruf an eine externe API.

Die Gegenleistung: Ihr Team besitzt auch den Rest der Produktionsoberfläche:

  • CPU und Speicher für Rendering.
  • Font-Erkennung und Fallback in jeder Deployment-Umgebung.
  • Barcode-Bibliotheksintegration und Druck-QA.
  • Native Pakete und Deployment-Themen für Charting oder eigene Grafiken.
  • Monitoring, Retries und Fehlerbehandlung.
  • Regionale Deployments, wenn Nutzer oder Lager global sind.
  • Rollouts bei jeder Layout-Änderung.

Mit gPdf verschiebt sich diese Oberfläche nach außen: Die Anwendung sendet einen DocumentRequest oder template_id + data, und der Service besitzt Renderer, Edge-Laufzeitumgebung, Fonts, Barcode-Primitives, PDF/A-Ausgabe und E-Invoice-Paketierung. Weniger attraktiv, wenn Sie jedes Detail in C# behalten wollen; attraktiver, wenn PDF-Generierung eine gemeinsam nutzbare Infrastrukturschicht sein soll, die jeder Stack aufrufen kann.

Drei Abwägungen, die eine gehostete API ehrlich beantworten muss

Die meisten “Bibliothek vs API”-Argumentationen überspringen die drei Fragen, die ein .NET-Architekt zuerst stellt. Ein fairer Vergleich spricht sie aus.

1. Wohin die Dokumentdaten gehen. Diese Seite dreht sich vor allem um Rechnungen, Kontoauszüge und E-Invoices: Dokumente voller Namen, Adressen, Steuer-IDs und Beträge. Mit QuestPDF werden diese Bytes in Ihrem Prozess gebaut und verlassen ihn nie. Die öffentliche gPdf-API überträgt den Payload an den Renderer, aber der Renderer bewahrt nichts auf: Das Request-JSON liegt nur während des Renders in einem Cloudflare Workers V8-Isolate (typisch ~4 ms) und wird freigegeben, sobald die Antwort abgeschlossen ist. Es wird nie gespeichert, geloggt, gesampelt oder für Training genutzt; operative Logs sind auf HTTP-Status und Dauer beschränkt (security, DPA). EU / globale Datenresidenz und Enterprise On-Prem / Private Deployment verkleinern oder schließen die Exposition weiter. Trotzdem ist Generierung in-process ohne Setup ein legitimer, manchmal entscheidender Grund, warum ein Finanzteam oder ein Team im öffentlichen Sektor QuestPDF wählt.

2. Der Ausfallmodus. Eine Bibliothek hat keinen Drittanbieter, der ausfallen kann; Generierung kann nur auf Infrastruktur scheitern, die Sie bereits besitzen. Eine gehostete API fügt eine Verfügbarkeitsabhängigkeit hinzu, die Sie nicht kontrollieren. gPdf sollte man wie jeden externen Aufruf behandeln: Timeout, Retry, Queue und idealerweise Fallback für einen eingeschränkten Betriebsmodus. Wenn Dokumentgenerierung auf einem kritischen synchronen Pfad liegt, wägen Sie “selbst betreiben” gegen “von Anbieter-Uptime abhängen” ab.

3. Das Latenzprofil. In-Process-Generierung ist ein Funktionsaufruf ohne Netzwerk. Ein gehosteter Aufruf ist ein Netzwerk-Roundtrip. Für Batch- und asynchrone Jobs ist das oft Rauschen. Für “Nutzer klickt, PDF muss jetzt erscheinen” ist in-process strukturell schneller. gPdfs Edge PoPs halten den Hop klein, aber es bleibt TLS plus Roundtrip; QuestPDF ist ein Methodenaufruf.

Nichts davon macht gPdf zur falschen Wahl; es definiert wann es die richtige Wahl ist: für Teams, deren Dokumentdaten den Prozess verlassen dürfen, deren Abläufe einen Netzwerk-Hop tolerieren und die lieber von der Verfügbarkeit eines Anbieters abhängen als selbst eine Render-Flotte zu betreiben.

Lizenzierung und Preismodell

QuestPDFs öffentliche Lizenzseite sagt, dass eine kommerzielle Lizenz nur für Unternehmen über 1 Mio. USD jährlichem Bruttoumsatz erforderlich ist. Die Community-Stufe ist unter MIT-Bedingungen kostenlos für berechtigte Einzelpersonen, Open-Source-Projekte, gemeinnützige Organisationen und Unternehmen unter dieser Umsatzgrenze. Dieselbe Seite listet zwei permanente kommerzielle Stufen: Professional für 999 USD plus lokale Steuer für Teams mit bis zu 10 Entwicklern und Enterprise für 2.999 USD plus lokale Steuer für die gesamte Organisation ohne Entwicklerzählung. Beide enthalten ein Jahr Updates sowie unbegrenzte Projekte, Server und Deployments; die Lizenz für die zuletzt erhaltene Version läuft nicht ab.

Auch das Durchsetzungsmodell ist ungewöhnlich leichtgewichtig. Die Lizenz wird mit einer Zeile gesetzt: QuestPDF.Settings.License = LicenseType.Community;. Kein Lizenzschlüssel, kein Aktivierungsserver und laut QuestPDFs eigener Konfigurationsseite keine Netzwerkaufrufe und keine Daten, die die Maschine verlassen. Es ist ein Ehrensystem: Sie wählen die Stufe, für die Sie berechtigt sind. Es gibt keine Anbieterrechnung pro Dokument, und eine bezahlte Lizenz läuft überall, auch komplett offline.

gPdf bepreist den Rendering-Service direkt. Der öffentliche Basic Plan startet bei 5 USD/Monat für 100.000 Seiten, Mehrverbrauch ab 0,00005 USD pro Seite. Das ist eine Anbieterrechnung, entfernt aber auch das separate Projekt, PDF-Generierung zu betreiben: kein Render-Cluster, kein NuGet-Deployment-Pfad, kein regionaler Warm Pool, kein Font-Paket pro App und kein PDF-Service zum Patchen.

Der Kostenvergleich ist daher nicht “999 USD vs 5 USD”; die Lizenz ist die kleine Zeile. Der echte Vergleich ist:

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

Nach öffentlicher Seitenlogik kostet gPdf Mehrverbrauch 0,05 USD pro 1.000 Seiten (50 USD pro 1 Mio., 500 USD pro 10 Mio.). Eine einmalige Enterprise-Lizenz für 2.999 USD erreicht gegen diese Rechnung erst bei etwa 60 Mio. Seiten den Break-even; dabei sind QuestPDF-Hosting und Entwicklermonate noch ignoriert, was den realen Schnittpunkt deutlich weiter zugunsten von gPdf verschiebt, sofern Sie die Render-Infrastruktur nicht bereits sehr günstig betreiben. Faustregel: Wenn Sie nur zur Nutzung der Bibliothek einen Render-Service bauen und besetzen müssten, gewinnt gPdf meist bei den Gesamtkosten, lange bevor die Seitenrechnung die Lizenz einholt; wenn diese Infrastruktur bereits existiert und fast kostenlos ist, gewinnt die permanente Lizenz im großen Maßstab.

Entwicklungsablauf: Fluent C# vs Vorlagen

QuestPDFs Fluent API passt gut, wenn Entwickler die Dokumentform besitzen. Starke Typisierung, Methodenketten, wiederverwendbare C#-Komponenten, IDE-Refactorings und Companion App ergeben Sinn, wenn das PDF Teil der Anwendungscodebasis ist.

gPdf passt zu einem anderen Ablauf. Entwickler können JSON weiterhin direkt schreiben, aber Produktionssysteme bewegen sich meist zu Vorlagen. Designer, Mitarbeitende im Betrieb oder Entwickler justieren Layout in gPdf Studio. Das freigegebene Layout wird zur Vorlage, und das Backend rendert weiter mit template_id + data.

Dieser Unterschied zählt, wenn Dokumente häufig wechseln. Ändert sich ein Carrier-Label, eine Rechnung, ein Lieferschein oder ein Kontoauszug, kann gPdf die Laufzeitumgebung stabil halten und nur die Vorlage bewegen. Bei QuestPDF ist Layout C#-Code; der normale Weg ist Codeänderung, Test, Build, Deployment und Rollback-Plan.

Kein Ablauf ist universell besser: QuestPDF optimiert für C#-Entwickler, die das Dokument als Code wollen; gPdf für operative Vorlagen, die über Systeme hinweg geteilt werden.

Compliance: Beide Produkte sind ernst zu nehmen

Dies ist kein Vergleich, in dem gPdf gewinnt, weil der Wettbewerber angeblich keine Compliance-Funktionen hat. QuestPDFs aktuelles öffentliches Material listet starke Standardunterstützung, darunter PDF/A, PDF/UA-1 und EN 16931 E-Invoicing über ein ZUGFeRD 2.1 / Factur-X-Beispiel auf Basis des UN/CEFACT Cross Industry Invoice (CII)-Standards. Dieses Beispiel setzt PdfA = true, bettet den factur-x.xml Payload mit AddAttachment() ein, erweitert das Dokument mit XMP Metadaten und validiert das Ergebnis mit veraPDF (für PDF/A-3b) und Mustang Project (für ZUGFeRD). Das ist ein vollständiges, ehrliches Rezept, und Ihre Pipeline besitzt jeden Schritt.

gPdf verpackt dieselben Standards als API-Vertrag. JSON Render stellt 6 PDF/A-Profile (1b, 2b, 3b, 4, 2u, 3u) plus PDF/UA-1 über settings.profile bereit, Template Render nutzt dasselbe Dokumentmodell, und E-Invoice Render stellt einen dedizierten POST /api/v1/e-invoice/render-Endpunkt bereit, der Factur-X / ZUGFeRD PDF/A-3b-Pakete mit eingebettetem EN 16931 CII XML erzeugt. Der Unterschied zum QuestPDF-Rezept ist, was der Service für Sie übernimmt: gPdf führt PDF/A-3b- und E-Invoice-Validierung serverseitig aus, unterstützt synchrone Inline- oder gepollte Objektlieferung und bietet EU oder globale Datenresidenz als Request-Einstellungen statt als Schritte, die Sie zusammensetzen und betreiben. QuestPDF passt, wenn diese Validierung in Ihrer eigenen .NET-Pipeline leben soll; gPdf, wenn sie ein gehosteter Vertrag sein soll, den viele Systeme teilen.

Fonts und Barcodes: Der echte Vergleich ist Integrationsaufwand

QuestPDF hat ein leistungsfähiges Font-Modell. Es bringt standardmäßig Lato 2.015 mit, lädt automatisch System- und Deployment-Verzeichnis-Fonts, erlaubt eigene Fonts über FontManager und unterstützt Fallback-Ketten. Das gibt Entwicklern Kontrolle. Dieselben Dokumente sind aber offen über den Haken: In den meisten Cloud-Deployments sind wenige oder gar keine Fonts verfügbar, was zu unerwarteten Ergebnissen führen kann; sie empfehlen, Umgebungs-Fonts zu deaktivieren und explizit zu registrieren, was Sie brauchen. Anders gesagt: Auf einem Container- oder Serverless-Ziel müssen Sie die Font-Umgebung planen, ausliefern und testen; eine fehlende Glyphe wird entweder ein Ersatzzeichen oder, wenn CheckIfAllTextGlyphsAreAvailable aktiv ist, eine Exception.

gPdf macht Fonts zu einem Teil der Service-Grenze. Der Renderer bündelt ein mehrschriftfähiges Set: Latein, Griechisch, Kyrillisch, Arabisch, Hebräisch, Bengali, Tamil, Thai, Vietnamesisch, Monospace und CJK mit schriftbezogenem Fallback auf Noto KR / JP / SC. Er löst stille Font-Wahlen über implizite Auto-Auswahl und explizite Wahlen über prefer oder strict. Aufrufer liefern keinen CJK-Font aus, registrieren keine Noto-Assets in einer .NET-App und stimmen Fallback nicht je Deployment-Ziel ab. Sie senden Daten; der Renderer besitzt die Font-Umgebung, gleich in jeder Region.

Der Barcode-Vergleich hat dieselbe Form. QuestPDFs Barcode-Dokumente zeigen einen soliden Ansatz mit ZXing.Net, gerendert als Vektor-SVG, und weisen ausdrücklich darauf hin, dass ZXing.Net nicht im QuestPDF-Paket enthalten ist; Sie installieren es aus NuGet und verdrahten es:

// 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.

Mit gPdf ist Barcode-Generierung ein Schemaelement erster Klasse. Die Anfrage deklariert Format, Inhalt, physische Größe und eine optionale menschenlesbare Zeile; GS1-Formate sind nativ, also gehen Application Identifiers direkt in content:

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

Für eine einzelne .NET-App kann es einfach sein, ZXing.Net zu installieren und die Ausgabe zu testen. Für viele Services und Vorlagen, besonders Logistik- und Handelsanwendungsfälle mit GS1-128, SSCC, GTIN, GS1 DataMatrix oder GS1 QR plus lesbarer Klartextzeile, ist es wartbarer, Barcode-Verhalten in die Dokument-API zu verschieben, statt dieselbe ZXing-Verdrahtung in jedem Service neu zu implementieren.

Wo QuestPDF klar gewinnt

Neben Offline-Betrieb, Dokumentdaten im eigenen Perimeter und dem Fall, dass der PDF-Code selbst Teil des Produkts ist, also ein Team den Rendering-Pfad inspizieren, erweitern oder besitzen muss, hat QuestPDF zwei Fähigkeitsbereiche, die klar außerhalb von gPdf liegen:

  • Operationen auf bestehenden PDFs. QuestPDF kann bestehende Dateien laden und zusammenführen, Seiten auswählen / neu ordnen / umkehren / filtern, Overlays anwenden, Attachments hinzufügen, XMP-Metadaten setzen, für Web-Auslieferung linearisieren und mit 40/128/256-Bit-Sicherheit sowohl verschlüsseln als auch entschlüsseln. gPdf kann von ihm erzeugte PDFs mit Passwort und Permissions schützen, öffnet, merged oder entschlüsselt aber keine Dateien, die es nicht erstellt hat.
  • Charts, Karten und eigene Grafiken. QuestPDF integriert Charting-Bibliotheken (ScottPlot, LiveCharts, Microcharts), bettet Mapbox-Karten ein und stellt eine SkiaSharp-Canvas für beliebiges 2D-Zeichnen bereit. gPdf kann Vektorgrafik mit dem path-Element (SVG path data) zeichnen oder ein vorgelagert erzeugtes SVG / PNG-Chart einbetten, hat aber keine eingebaute Diagramm-Engine, Karten oder Canvas. Wenn datengetriebene Charts zentral sind, gehört dieses Tooling besser zu QuestPDF.

Wo gPdf klar gewinnt

gPdf gewinnt, wenn eine Organisation nicht will, dass jedes Produktteam seinen eigenen PDF-Service besitzt: polyglotte Stacks, globale Abläufe und ERP / OMS / WMS / E-Commerce / Fintech / Ticketing-Systeme, die Dokumente aus strukturierten Daten rendern, mit Vorlagen, die sich unabhängig vom Code ändern. In solchen Umgebungen startet eine lokale Bibliothek oft günstig und wird zur Flotte: ein Service pro Sprache, ein Deployment-Pfad pro Region, ein Font-Plan pro Container, eine Barcode-Regression-Suite pro Team. gPdf macht aus dieser Flotte einen HTTP-Vertrag.

Serverless zeigt die Grenze am klarsten. Auf AWS Lambda, Cloud Run oder Azure Functions läuft QuestPDF weiterhin in der Anwendung: Ihr Team paketiert .NET-Laufzeitumgebung, Fonts, native Abhängigkeiten und genug CPU / Speicher für PDF-Spitzenlast und besitzt die Cold Starts. gPdf ist bereits der Render-Service: Die Funktion sendet einen kleinen template_id + data-Request an den Edge und bekommt PDF-Bytes zurück, ohne Renderer zum Aufwärmen oder regionalen Worker zum Skalieren.

Migrationsform

Die Migration von QuestPDF zu gPdf ist kein Zeile-für-Zeile-Rewrite. Es ist eine Grenzverschiebung: Der C#-Code, der das PDF baut, wird entweder ein DocumentRequest in JSON oder eine veröffentlichte Vorlage.

Vorher / nachher - der C#-Dokumentaufbau wird zu einem HTTP-POST (zum Aufklappen klicken)
- // 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();

Nach dieser Grenzverschiebung können Layout-Änderungen Vorlagenrevisionen werden statt Anwendungsdeployments. Die Anwendung besitzt weiterhin Business-Daten und Ablaufentscheidungen; gPdf besitzt das Rendering.

Preis- und Quellenhinweis

QuestPDF-Informationen auf dieser Seite wurden am 2026-06-02 gegen offizielle QuestPDF-Quellen geprüft: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management und ZUGFeRD example. Preis- und Feature-Seiten können sich ändern; Einkaufsteams sollten die Anbieter-Seite vor einer Kaufentscheidung erneut prüfen. QuestPDF und verwandte Marken gehören ihren jeweiligen Eigentümern, und dieser Vergleich ist von ihnen nicht autorisiert.

Verwandte PDF-Generierungsszenarien

Teams, die QuestPDF und gPdf vergleichen, prüfen meist, ob PDF-Erzeugung im .NET-Prozess bleiben soll oder als gemeinsame API-Schicht besser passt. Für strukturierte Dokumente starten Sie mit JSON-to-PDF API und Template PDF API. Konkrete Anwendungsfälle sind Rechnungs-PDF API, Versandlabel PDF API und GS1 Barcode API. Für Archivierung und E-Invoices vergleichen Sie PDF/A API, Factur-X API und ZUGFeRD API.

FAQ

Ersetzt gPdf QuestPDF?

Nein. gPdf ersetzt die Notwendigkeit, einen PDF-Generierungsservice für strukturierte Geschäftsdokumente zu betreiben. QuestPDF bleibt eine starke lokale C#-Bibliothek, wenn das PDF innerhalb der Anwendung generiert werden soll.

Ist QuestPDF kostenlos?

QuestPDFs öffentliche Lizenzseite sagt, dass die Community-Stufe unter MIT-Bedingungen für berechtigte Einzelpersonen, Open-Source-Projekte, gemeinnützige Organisationen und Unternehmen unter 1 Mio. USD jährlichem Bruttoumsatz kostenlos ist. Unternehmen darüber benötigen eine permanente kommerzielle Lizenz: Professional für 999 USD plus lokale Steuer für bis zu 10 Entwickler oder Enterprise für 2.999 USD plus lokale Steuer organisationsweit, jeweils inklusive einem Jahr Updates.

Kann gPdf Charts oder Karten wie QuestPDF erzeugen?

Nicht als eingebaute Engine. QuestPDF integriert Charting-Bibliotheken (ScottPlot, LiveCharts, Microcharts), Mapbox-Karten und eine SkiaSharp-Canvas, die im Dokument rendern. gPdf kann weiterhin Vektor-Charts mit dem path-Element (akzeptiert SVG path data) und Shapes zeichnen oder ein SVG / PNG aus einer beliebigen Charting-Bibliothek als image einbetten. Der Unterschied: QuestPDF berechnet und rendert den Chart in-process; bei gPdf produzieren Sie die Chart-Grafik, und gPdf platziert sie. Wenn datengetriebene Charts oder Karten zentral für das Dokument sind, passt QuestPDF besser.

Welches Produkt ist günstiger?

Das hängt von der Grenze ab. QuestPDF kann günstiger sein für .NET-Teams, die Community-Bedingungen erfüllen oder bereits Render-Infrastruktur betreiben. gPdf kann günstiger sein, wenn die Alternative darin besteht, einen PDF-Service über Produkte oder Regionen hinweg zu bauen, zu hosten und zu warten.

Speichert oder loggt gPdf meine Dokumentdaten?

Nein. Das JSON, das Sie senden, und das PDF, das gPdf zurückgibt, werden nicht gespeichert. Jeder Request rendert in einem einzelnen Cloudflare Workers V8-Isolate, bleibt nur während des Renders im Speicher, typisch etwa 4 ms, und wird freigegeben, wenn der Response-Stream abgeschlossen ist; gPdf speichert, loggt, sampelt oder trainiert nicht auf DocumentRequest-Inhalten. Operative Logs behalten nur HTTP-Status und Dauer für 30 Tage und enthalten keine Anfragekörper. Siehe security policy, privacy policy und DPA. Für Anwendungsfälle, die gar keine Daten übertragen dürfen, hält On-Prem / Private Deployment alles innerhalb Ihres Perimeters.

Kann QuestPDF ohne Internetzugang laufen?

Ja. QuestPDFs Lizenz-Konfigurationsseite sagt, dass es keinen Lizenzschlüssel oder Aktivierungsserver gibt und Berechnungen lokal ausgeführt werden. Das ist einer der klarsten Gründe, QuestPDF zu wählen.

Kann gPdf beliebige C#-QuestPDF-Layouts rendern?

Nein. gPdf führt keinen C#-Layoutcode aus. Eine Migration bedeutet, die Dokumentform in einen gPdf-JSON-Request oder eine gespeicherte gPdf-Vorlage zu konvertieren.