Comparaisons

gPdf vs QuestPDF pour la génération de documents .NET

QuestPDF est une excellente bibliothèque PDF C#. gPdf est une API hébergée à l'edge. Comparez modèle de licence, propriété de l'exécution, parcours de modèles, conformité, codes-barres et cas d'usage.

En bref

Choisissez selon votre frontière de confiance. QuestPDF garde génération et données dans votre processus .NET, en échange de la gestion des polices, codes-barres, montée en charge et raccordements de conformité. gPdf transforme la génération en appel HTTP polyglotte, en échange de l'envoi des données au moteur de rendu et d'une dépendance à sa disponibilité. Une application .NET qui privilégie contrôle local, confidentialité et hors ligne choisit souvent QuestPDF ; une équipe polyglotte qui veut une infrastructure PDF à l'edge avec prix par page choisit souvent gPdf.

Côte à côte

Critère gPdf QuestPDF Avantage
Frontière produit
Le bon choix dépend de votre volonté d'acheter un service ou de posséder le chemin de rendu.
API hébergée à l'edge pour JSON Render, Template Render et E-Invoice Render. Bibliothèque locale C# / .NET installée depuis NuGet et appelée depuis le code applicatif. Égalité
Intégration principale HTTPS POST depuis Node, Python, Go, .NET, Ruby, PHP, Java, workers, jobs ou proxies applicatifs. API C# fluide avec typage fort, prise en charge dans l'IDE et constructions .NET familières. Égalité
Placement de l'environnement d'exécution Service Cloudflare Workers à l'edge ; pas de service PDF, configuration de polices ou cluster de déploiement dans votre pile. S'exécute là où tourne votre application .NET ; votre équipe possède CPU, mémoire, dépendances natives/packages, déploiement, supervision et montée en charge. gPdf
Parcours codes-barres Élément natif `barcode` couvrant formats 1D, 2D et GS1 (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode), avec placement intégré de la ligne lisible. La documentation officielle intègre ZXing.Net, installé séparément depuis NuGet et converti en SVG ; les identifiants d'application GS1 et le cadrage FNC1 sont câblés à la main. gPdf
Polices et texte multilingue Polices embarquées et gérées par le service, sélection automatique implicite, modes explicites `prefer` / `strict` et secours CJK par écriture (KR, JP, SC) ; les appelants n'empaquettent aucun fichier de police dans leurs applications. Inclut Lato et peut charger des polices d'environnement, de répertoire de déploiement et personnalisées avec chaînes de secours, mais sa propre documentation prévient que la plupart des déploiements cloud disposent de peu ou pas de polices. gPdf
Mots de passe et permissions à la génération
QuestPDF prend en charge les mêmes forces de chiffrement et mots de passe utilisateur/propriétaire, mais comme étape postérieure sur le fichier généré, pas en ligne pendant la génération.
Définis dans la même requête de génération : `settings.security` applique chiffrement AES-128/256, mots de passe d'ouverture et propriétaire, et huit indicateurs de permission dans le même appel `/api/v1/pdf/render`. Génère d'abord, puis chiffre dans une Document Operation séparée : `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Itération de modèles gPdf Studio conçoit les mêmes modèles JSON que ceux générés en production via `template_id + data`. QuestPDF Companion fournit prévisualisation avec rechargement à chaud, inspection de hiérarchie, outils de coordonnées et navigation vers le code source des documents C#. Égalité
Tarification commerciale
Prix QuestPDF vérifiés sur les pages publiques de licence le 2026-06-02. Les équipes .NET à fort volume doivent comparer licence + hébergement au prix par page de gPdf.
Le plan Basic coûte 5 USD/mois et inclut 100 000 pages ; le dépassement commence à 0,00005 USD par page, avec le même calcul public par page sur toutes les pages produit. Gratuit sous termes Community MIT sous 1 million USD de chiffre d'affaires annuel brut ; les licences commerciales perpétuelles listent Professional à 999 USD (jusqu'à 10 développeurs) et Enterprise à 2 999 USD (toute l'organisation, sans comptage développeur), plus taxes locales, chacune avec 1 an de mises à jour. Égalité
Frais serveur et déploiement Aucune flotte serveur à déployer pour l'API publique ; l'usage est facturé par plan et pages. Les termes commerciaux annoncent projets, serveurs et déploiements illimités ; l'infrastructure reste exploitée par le client. Égalité
PDF/A et facture électronique Six profils PDF/A (1b/2b/3b/4/2u/3u), PDF/UA-1 et route hébergée Factur-X / ZUGFeRD avec XML EN 16931 CII en PDF/A-3b, validation côté serveur et résidence des données UE / globale. Prise en charge solide de PDF/A, PDF/UA-1 et ZUGFeRD 2.1 / Factur-X en code ; vous câblez vous-même veraPDF et Mustang pour valider. Égalité
Où vont les données du document
QuestPDF garde les données dans le processus ; gPdf les transmet mais ne retient rien. Les journaux opérationnels conservent uniquement statut HTTP et durée, jamais les corps de requête.
L'API publique transmet les données du document, mais le moteur de rendu est à rétention zéro : le JSON de requête vit dans un isolate Cloudflare Workers seulement pendant la génération (~4 ms typiques), sans stockage, journalisation ni entraînement. Résidence UE / globale et déploiement sur site / privé réduisent ou ferment encore l'exposition. Les octets sont produits dans le processus ; les données du document ne franchissent pas votre frontière de confiance vers un tiers. Égalité
Fonctionnement hors ligne / réseau isolé
QuestPDF fonctionne hors ligne sans configuration ; gPdf atteint la même frontière via un déploiement privé entreprise.
L'API publique exige un accès réseau ; le déploiement entreprise sur site / privé exécute le moteur de rendu dans votre propre infrastructure pour usage hors ligne ou en réseau isolé. S'exécute localement sans clé de licence, sans serveur d'activation et sans appels réseau à l'exécution ; le type de licence se fixe en une ligne de code sur un modèle de confiance. Égalité
Opérations sur PDF existants Génère de nouveaux PDF depuis des requêtes structurées ; ne charge, fusionne, déchiffre ni édite des fichiers existants. Document Operations sur PDF existants : fusion, réordonnancement / inversion / filtrage de pages, superpositions, chiffrement et déchiffrement 40/128/256 bits, pièces jointes, métadonnées XMP et linéarisation web. QuestPDF
Graphiques et visualisation de données
Les deux s'appuient sur une bibliothèque pour transformer les données en visualisation ; QuestPDF la rend dans le document, gPdf place le SVG / PNG que vous produisez. QuestPDF mène sur graphiques, cartes et Canvas intégrés.
Dessine du vectoriel via l'élément `path` (SVG path data) et des formes, ou intègre un graphique SVG / PNG produit par n'importe quelle bibliothèque ; pas de moteur graphique, cartes ou API Canvas intégrés. Intégrations graphiques de premier plan (ScottPlot, LiveCharts, Microcharts), cartes Mapbox et API Canvas SkiaSharp pour graphismes personnalisés. QuestPDF
Meilleur cas d'usage par défaut Documents métier de production partagés entre équipes : étiquettes, factures, reçus, relevés, tickets et factures électroniques. Applications C# qui veulent une génération locale de documents avec pleine propriété du code et aucune dépendance de service à l'exécution. Égalité

Lequel choisir

Choisir gPdf si
  • La génération PDF est une infrastructure partagée par plusieurs services ou langages, pas une fonction possédée par une seule application .NET.
  • Vous voulez sortir de votre pile la génération PDF, la gestion des polices, la géométrie des codes-barres et la montée en charge régionale.
  • Votre équipe veut que les changements de mise en page soient `template_id + data`, pas des déploiements de code C#.
  • Vous avez besoin d'une génération à l'edge près des entrepôts, clients ou tâches serveur sans déployer un service PDF .NET dans chaque région.
  • Vous préférez un prix public par page et aucun achat de licence commerciale avant la première génération en production.
Choisir QuestPDF si
  • Votre produit est d'abord .NET, et le code C# est la source de référence naturelle pour la mise en page du document.
  • Les données du document doivent rester dans votre périmètre et un déploiement privé entreprise de gPdf n'est pas envisagé.
  • Vous avez besoin de génération hors ligne ou en réseau isolé dès le départ, sans monter un déploiement privé de génération.
  • La génération se trouve sur un chemin synchrone critique en latence où un appel dans le processus bat tout aller-retour réseau.
  • Vous avez besoin d'opérations sur PDF existants : fusion, extraction de pages, superpositions, déchiffrement ou pièces jointes dans la même bibliothèque.
  • Vous rendez des graphiques, cartes ou graphismes SkiaSharp personnalisés dans le document (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Vous êtes éligible aux termes Community MIT, ou voulez une licence perpétuelle en paiement unique, et exploiter le moteur de rendu localement n'est pas une charge.
Fonctionnalités

gPdf est une API JSON vers PDF à l'edge, conçue pour les factures, documents, étiquettes d'expédition, codes-barres, PDF/A et factures électroniques à fort volume. Génération de PDF en quelques millisecondes sur une infrastructure edge mondiale — optimisée pour une production documentaire prévisible. Tarification au niveau infrastructure, assez basse pour remplacer la construction et l'exploitation de votre propre infrastructure PDF.

Fonctionnalités

QuestPDF excelle lorsque C# est la frontière du produit

QuestPDF mérite une comparaison respectueuse. C’est une bibliothèque moderne de génération PDF pour développeurs C#, avec API fluide, typage fort, documentation large, Companion App pour prévisualiser et déboguer, et un modèle de licence inhabituellement clair pour un SDK PDF.

La question produit n’est pas « lequel peut créer un PDF ? ». Les deux le peuvent. La question utile est où doit vivre la frontière PDF : dans une application .NET qui possède la mise en page, les octets et le cycle de vie, ou comme service d’infrastructure appelé par plusieurs produits et langages.

Guide de décision rapide

  • Choisissez QuestPDF quand C# est la source de référence du document, quand l’application doit fonctionner hors ligne ou quand vous avez besoin d’opérations locales sur PDF existants.
  • Choisissez gPdf quand une seule couche PDF doit servir Node, Python, Go, .NET, jobs et systèmes régionaux via la même API HTTP.
  • Choisissez gPdf quand les changements de mise en page doivent être des révisions de modèle, pas des recompilations C# et redéploiements de service.

Même famille documentaire, modèle de propriété différent

Avec QuestPDF, l’application possède la génération PDF. C’est une vraie force : C# reste près du modèle de domaine, s’exécute et se débogue localement, et aucun appel à une API externe n’a lieu à l’exécution.

La contrepartie est que votre équipe possède aussi le reste du périmètre de production :

  • CPU et mémoire pour générer.
  • Découverte des polices et secours dans chaque environnement de déploiement.
  • Intégration de bibliothèque de codes-barres et QA d’impression.
  • Packages natifs et contraintes de déploiement pour graphiques ou intégrations visuelles personnalisées.
  • Supervision, réessais et gestion des échecs.
  • Déploiement régional quand utilisateurs ou entrepôts sont mondiaux.
  • Déploiements à chaque changement de mise en page du document.

Avec gPdf, ce périmètre se déplace vers l’extérieur : l’application envoie un DocumentRequest ou template_id + data, et le service possède le moteur de rendu, l’environnement à l’edge, les polices, les primitives de codes-barres, la sortie PDF/A et l’empaquetage de facture électronique. C’est moins attractif si vous voulez chaque détail en C# ; plus attractif si la génération PDF doit devenir une couche utilitaire appelable depuis n’importe quelle pile.

Trois compromis qu’une API hébergée doit expliquer franchement

La plupart des arguments “bibliothèque vs API” sautent les trois premières questions d’un architecte .NET. Une comparaison honnête les traite explicitement.

1. Où vont les données du document. Cette page parle surtout de factures, relevés et factures électroniques : des documents pleins de noms, adresses, identifiants fiscaux et montants. Avec QuestPDF, ces octets sont construits dans votre processus et ne sortent jamais. L’API publique de gPdf transmet les données du document au moteur de rendu, mais celui-ci est à rétention zéro : le JSON de requête est maintenu dans un isolate V8 de Cloudflare Workers seulement pendant la génération (environ 4 ms typiques) et libéré à la fin de la réponse ; il n’est jamais stocké, journalisé, échantillonné ni utilisé pour l’entraînement, et les journaux opérationnels se limitent au statut HTTP et à la durée (security, DPA). La résidence UE / globale et le déploiement entreprise sur site / privé réduisent ou ferment encore l’exposition. Malgré cela, garder la génération dans le processus sans configuration reste une raison légitime, parfois décisive, pour qu’une équipe finance ou secteur public choisisse QuestPDF.

2. Le mode d’échec. Une bibliothèque n’a pas de tiers susceptible de tomber ; la génération ne peut échouer que sur une infrastructure que vous possédez déjà. Une API hébergée ajoute une dépendance de disponibilité que vous ne contrôlez pas. La bonne façon d’adopter gPdf est de traiter les appels de génération comme tout appel externe : délai d’expiration, réessai, file d’attente et, si possible, alternative en mode dégradé. Si la génération documentaire est sur un chemin synchrone critique, comparez “l’exploiter vous-même” à “dépendre de la disponibilité d’un fournisseur”.

3. Le profil de latence. La génération dans le processus est un appel de fonction sans réseau. Un appel hébergé est un aller-retour réseau. Pour les lots et tâches asynchrones, c’est du bruit. Pour « l’utilisateur clique et le PDF doit apparaître maintenant », l’exécution dans le processus est structurellement plus rapide. Les PoP à l’edge de gPdf réduisent le saut, mais il reste TLS plus un aller-retour ; avec QuestPDF, c’est un appel de méthode.

Rien de tout cela ne rend gPdf mauvais ; cela définit quand il est le bon choix : des équipes dont les données documentaires peuvent sortir du processus, dont les parcours tolèrent un saut réseau et qui préfèrent dépendre de la disponibilité d’un fournisseur plutôt qu’exploiter leur propre flotte de génération.

Modèle de licence et prix

La page publique de licences QuestPDF indique qu’une licence commerciale n’est obligatoire que pour les entreprises dont le chiffre d’affaires annuel brut dépasse 1 million USD. Le niveau Community est gratuit, sous termes MIT, pour les personnes éligibles, projets open-source, organisations à but non lucratif et entreprises sous ce seuil. La même page liste deux niveaux commerciaux perpétuels : Professional à 999 USD plus taxes locales pour équipes jusqu’à 10 développeurs, et Enterprise à 2 999 USD plus taxes locales pour toute l’organisation sans compter les développeurs. Les deux incluent 1 an de mises à jour et projets, serveurs et déploiements illimités ; la licence n’expire pas pour la dernière version reçue.

Le modèle d’application est aussi très léger. La licence se fixe avec une seule ligne : QuestPDF.Settings.License = LicenseType.Community;. Pas de clé de licence, pas de serveur d’activation et, selon la page de configuration de QuestPDF, pas d’appels réseau ni de données qui sortent de la machine. C’est un modèle fondé sur la confiance : vous choisissez le niveau auquel vous êtes éligible. Il n’y a pas de facture fournisseur par document, et une licence payante tourne partout, y compris totalement hors ligne.

gPdf tarife directement le service de génération. Le plan public Basic démarre à 5 USD/mois pour 100 000 pages, avec dépassement à partir de 0,00005 USD par page. C’est une facture fournisseur, mais elle retire aussi le projet séparé d’exploiter la génération PDF : pas de cluster de génération, pas de chemin de déploiement NuGet, pas de groupe régional préchauffé, pas de paquet de polices par application et pas de service PDF à corriger.

La comparaison de coût n’est donc pas “999 USD vs 5 USD” ; la licence est la petite ligne. La vraie comparaison est :

QuestPDF total = licence (paiement unique) + votre hébergement + temps de développement + astreinte
gPdf total     = facture par page (infrastructure, polices, montée en charge et exécution à l'edge incluses)

Avec le calcul public par page, le dépassement gPdf coûte 0,05 USD par 1 000 pages (50 USD par 1 million, 500 USD par 10 millions). Une licence Enterprise unique de 2 999 USD ne rejoint cette facture qu’autour de 60 millions de pages, et ce chiffre ignore l’hébergement et les mois d’ingénierie de QuestPDF, qui repoussent le croisement réel plus loin en faveur de gPdf sauf si vous exploitez déjà l’infrastructure de génération à très bas coût. Règle pratique : si vous devriez construire et doter en personnel un service de génération seulement pour utiliser la bibliothèque, gPdf gagne souvent en coût total bien avant que la facture par page rattrape la licence ; si cette infrastructure existe déjà et vous coûte presque rien, la licence perpétuelle gagne à l’échelle.

Mode de développement : C# fluide vs modèles

L’API fluide de QuestPDF convient quand les développeurs possèdent la forme du document. Typage fort, chaînes de méthodes, composants C# réutilisables, refactorisations dans l’IDE et Companion App ont du sens quand le PDF fait partie du code applicatif.

gPdf correspond à un autre mode de travail. Les développeurs peuvent toujours écrire du JSON directement, mais les systèmes de production évoluent souvent vers des modèles. Un designer, opérateur ou ingénieur ajuste la mise en page dans gPdf Studio. La mise en page approuvée devient un modèle, et le serveur continue de générer via template_id + data.

Cette différence compte quand le document change souvent. Si une étiquette transporteur, une facture, un bon de préparation ou un relevé change, gPdf peut garder l’environnement d’exécution stable et ne déplacer que le modèle. Avec QuestPDF, la mise en page est du code C# ; le chemin normal est donc changement de code, tests, compilation, déploiement et plan de retour arrière.

Aucun mode n’est universellement meilleur : QuestPDF optimise pour les développeurs C# qui veulent le document comme code ; gPdf pour des modèles opérationnels partagés entre systèmes.

Conformité : les deux produits sont sérieux

Ce n’est pas une comparaison où gPdf gagne en disant que le concurrent manque de fonctionnalités de conformité. La documentation publique actuelle de QuestPDF liste une prise en charge solide des standards, notamment PDF/A, PDF/UA-1 et facturation électronique EN 16931 via un exemple ZUGFeRD 2.1 / Factur-X basé sur le standard UN/CEFACT Cross Industry Invoice (CII). Cet exemple définit PdfA = true, intègre le fichier factur-x.xml avec AddAttachment(), étend le document avec des métadonnées XMP et valide le résultat avec veraPDF (pour PDF/A-3b) et Mustang Project (pour ZUGFeRD). C’est une recette complète et honnête, et votre chaîne possède chaque étape.

gPdf empaquette les mêmes standards comme contrat API. JSON Render expose six profils PDF/A (1b, 2b, 3b, 4, 2u, 3u) plus PDF/UA-1 via settings.profile, Template Render réutilise le même modèle documentaire, et E-Invoice Render expose une route dédiée POST /api/v1/e-invoice/render qui produit des paquets Factur-X / ZUGFeRD PDF/A-3b avec XML EN 16931 CII intégré. La différence face à la recette QuestPDF est ce que le service fait pour vous : gPdf exécute la validation PDF/A-3b et facture électronique côté serveur, prend en charge une livraison synchrone en réponse directe ou par objet consulté, et propose résidence UE ou globale comme options de requête, pas comme étapes à assembler et exploiter. QuestPDF convient quand cette validation doit vivre dans votre chaîne .NET ; gPdf quand elle doit être un contrat hébergé partagé par de nombreux systèmes.

Polices et codes-barres : l’effort d’intégration est la vraie comparaison

QuestPDF a un modèle de polices capable. Il embarque Lato 2.015 par défaut, charge automatiquement polices système et polices du répertoire de déploiement, permet d’enregistrer des polices personnalisées via FontManager et prend en charge les chaînes de secours. Cela donne du contrôle aux développeurs. Mais la même documentation est franche sur le piège : dans la plupart des déploiements cloud, peu ou pas de polices sont disponibles, ce qui peut produire des résultats inattendus ; elle recommande de désactiver les polices d’environnement et d’enregistrer explicitement ce dont vous avez besoin. Autrement dit, en conteneur ou en environnement serverless, l’environnement de polices est à vous de le planifier, l’empaqueter et le tester ; un glyphe manquant devient un caractère de remplacement ou, si vous activez CheckIfAllTextGlyphsAreAvailable, une exception.

gPdf fait des polices une partie de la frontière du service. Le moteur de rendu embarque un jeu multi-écritures : latin, grec, cyrillique, arabe, hébreu, bengali, tamoul, thaï, vietnamien, monoespacement et CJK avec secours par écriture vers Noto KR / JP / SC. Il résout les choix silencieux par sélection automatique implicite et les choix explicites par prefer ou strict. Les appelants n’expédient pas de police CJK, n’enregistrent pas de ressources Noto dans une application .NET et n’ajustent pas le secours par cible de déploiement. Ils envoient des données ; le service possède l’environnement de polices, identique dans chaque région.

La comparaison codes-barres a une forme similaire. La documentation QuestPDF montre une approche solide avec ZXing.Net converti en SVG vectoriel, et précise que ZXing.Net n’est pas inclus dans le package QuestPDF : vous l’installez depuis NuGet et le câblez :

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

Avec gPdf, la génération de codes-barres est un élément de schéma de première classe. La requête déclare format, contenu, taille physique et ligne lisible optionnelle ; les formats GS1 sont natifs, donc les identifiants d’application vont directement dans 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" }
}

Pour une seule application .NET, installer ZXing.Net et tester la sortie peut être simple. Pour de nombreux services et modèles, surtout en logistique et commerce de détail avec GS1-128, SSCC, GTIN, GS1 DataMatrix ou GS1 QR et ligne d’interprétation lisible, déplacer le comportement codes-barres dans l’API documentaire est plus maintenable que recâbler ZXing dans chaque service.

Là où QuestPDF gagne clairement

Au-delà de l’exécution hors ligne, du maintien des données dans votre périmètre et des cas où le code PDF fait partie du produit, c’est-à-dire quand une équipe doit inspecter, étendre ou posséder le chemin de génération, QuestPDF conserve deux domaines clairement hors périmètre gPdf :

  • Opérations sur PDF existants. QuestPDF peut charger des fichiers existants et les fusionner, sélectionner / réordonner / inverser / filtrer des pages, appliquer des superpositions, ajouter des pièces jointes, définir des métadonnées XMP, linéariser pour le web et chiffrer et déchiffrer en 40/128/256 bits. gPdf peut protéger par mot de passe et permissions les PDF qu’il génère, mais il n’ouvre, ne fusionne ni ne déchiffre les fichiers qu’il n’a pas créés.
  • Graphiques, cartes et graphismes personnalisés. QuestPDF intègre des bibliothèques de graphiques (ScottPlot, LiveCharts, Microcharts), embarque des cartes Mapbox et expose un Canvas SkiaSharp pour dessin 2D arbitraire. gPdf peut dessiner du vectoriel avec l’élément path (SVG path data) ou intégrer un graphique SVG / PNG produit en amont, mais il n’a pas de moteur graphique, cartes ou Canvas intégrés ; si la visualisation de données est centrale, cet outillage vit mieux avec QuestPDF.

Là où gPdf gagne clairement

gPdf gagne lorsqu’une organisation ne veut pas que chaque équipe produit exploite son propre service PDF : piles polyglottes, parcours mondiaux et systèmes ERP / OMS / WMS / e-commerce / fintech / billetterie qui génèrent des documents depuis des données structurées, avec des modèles qui changent indépendamment du code. Dans ces environnements, une bibliothèque locale commence souvent bon marché et devient une flotte : un service par langage, un chemin de déploiement par région, un plan de polices par conteneur, un jeu de régressions codes-barres par équipe. gPdf transforme cette flotte en un contrat HTTP.

Le serverless rend la frontière très nette. Sur AWS Lambda, Cloud Run ou Azure Functions, QuestPDF tourne toujours dans l’application : votre équipe empaquette l’environnement .NET, les polices, les dépendances natives et assez de CPU / mémoire pour les pics PDF, et elle possède les démarrages à froid. gPdf est déjà le service de génération : la fonction envoie par POST une petite requête template_id + data à l’edge et reçoit les octets PDF, sans moteur de rendu à préchauffer ni worker régional à mettre à l’échelle.

Forme de migration

La migration de QuestPDF vers gPdf n’est pas une réécriture ligne à ligne. C’est un changement de frontière : le code C# qui construit le PDF devient soit une requête JSON de document, soit un modèle publié.

Before / after — l'appel C# de construction de document se réduit à un HTTP POST (cliquez pour développer)
- // 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();

Après ce déplacement de frontière, les changements de mise en page peuvent devenir des révisions de modèle au lieu de déploiements applicatifs. L’application reste propriétaire des données métier et des décisions de parcours ; gPdf possède la génération.

Note sur prix et sources

Les informations QuestPDF de cette page ont été vérifiées le 2026-06-02 auprès de sources officielles QuestPDF : License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management et ZUGFeRD example. Les pages de prix et fonctionnalités peuvent changer ; les équipes achats doivent revérifier la page fournisseur avant décision. QuestPDF et les marques associées appartiennent à leurs propriétaires respectifs, et cette comparaison n’est pas approuvée par eux.

Scénarios liés de génération PDF

Si vous comparez QuestPDF et gPdf, examinez aussi quand une API JSON-to-PDF, une API de PDF de facture, une API d’étiquettes d’expédition, des codes-barres GS1-128, PDF/A ou Factur-X/ZUGFeRD doivent devenir une capacité partagée plutôt qu’une bibliothèque exploitée dans chaque application.

FAQ

gPdf remplace-t-il QuestPDF ?

Non. gPdf remplace le besoin d’exploiter un service de génération PDF pour des documents métier structurés. QuestPDF reste une solide bibliothèque C# locale quand le PDF doit être généré dans l’application.

QuestPDF est-il gratuit ?

La page publique de licences QuestPDF indique que le niveau Community est gratuit sous termes MIT pour personnes éligibles, projets open-source, organisations à but non lucratif et entreprises sous 1 million USD de chiffre d’affaires annuel brut. Les entreprises au-dessus de ce seuil doivent utiliser une licence commerciale perpétuelle : Professional à 999 USD plus taxes locales jusqu’à 10 développeurs, ou Enterprise à 2 999 USD plus taxes locales pour toute l’organisation, chacune incluant 1 an de mises à jour.

gPdf peut-il générer des graphiques ou cartes comme QuestPDF ?

Pas comme moteur intégré. QuestPDF intègre des bibliothèques de graphiques (ScottPlot, LiveCharts, Microcharts), des cartes Mapbox et un Canvas SkiaSharp qui rend dans le document. gPdf peut tout de même dessiner des graphiques vectoriels avec l’élément path (qui accepte SVG path data) et des formes, ou intégrer un SVG / PNG produit par n’importe quelle bibliothèque comme image. La différence est que QuestPDF calcule et rend le graphique dans le processus, tandis qu’avec gPdf vous produisez le visuel et gPdf le place. Si les graphiques basés sur données ou les cartes sont centraux dans le document, QuestPDF convient mieux.

Quel produit coûte le moins cher ?

Cela dépend de la frontière. QuestPDF peut coûter moins cher pour des équipes .NET éligibles aux termes Community ou qui exploitent déjà l’infrastructure de génération. gPdf peut coûter moins cher quand l’alternative consiste à construire, héberger et maintenir un service PDF entre produits ou régions.

gPdf stocke-t-il ou journalise-t-il mes données documentaires ?

Non. Le JSON que vous envoyez et le PDF retourné par gPdf ne sont pas stockés. Chaque requête est générée dans un isolate V8 Cloudflare Workers, conservée en mémoire seulement pendant la génération, environ 4 ms typiques, puis libérée quand le flux de réponse se termine ; gPdf ne retient, ne journalise, n’échantillonne ni n’entraîne sur le contenu DocumentRequest. Les journaux opérationnels conservent seulement statut HTTP et durée pendant 30 jours, sans corps de requête. Consultez la politique de sécurité, la politique de confidentialité et le DPA. Pour les charges qui ne peuvent transmettre aucune donnée, un déploiement sur site / privé les garde dans votre périmètre.

QuestPDF peut-il fonctionner sans accès Internet ?

Oui. La page de configuration de licence QuestPDF indique qu’il n’y a pas de clé de licence ni serveur d’activation, et que les calculs sont effectués localement. C’est l’une des raisons les plus nettes de choisir QuestPDF.

gPdf peut-il générer des mises en page QuestPDF C# arbitraires ?

Non. gPdf n’exécute pas de code de mise en page C#. Une migration implique de convertir la forme du document en requête JSON gPdf ou en modèle gPdf enregistré.