Confronti

gPdf vs QuestPDF per generare documenti .NET

QuestPDF è un'ottima libreria PDF per C#. gPdf è un'API ospitata sull'edge. Confronto su licenze, responsabilità dell'ambiente, modelli, conformità, codici a barre e casi d'uso.

In sintesi

Scegliete in base al vostro perimetro di fiducia. QuestPDF mantiene generazione e dati nel processo .NET; in cambio vi assumete font, codici a barre, scalabilità e conformità. gPdf trasforma la generazione in una chiamata HTTP da qualunque linguaggio; in cambio inviate dati a un generatore terzo e dipendete dalla sua disponibilità. Le app .NET che valorizzano controllo locale, privacy e funzionamento offline scelgono spesso QuestPDF; i team poliglotti che vogliono infrastruttura PDF sull'edge con prezzo per pagina scelgono spesso gPdf.

Fianco a fianco

Criterio gPdf QuestPDF Vantaggio
Confine di prodotto
La scelta giusta dipende dal fatto che vogliate comprare un servizio o possedere il percorso di generazione.
API ospitata sull'edge per JSON Render, Template Render ed E-Invoice Render. Libreria locale C# / .NET installata da NuGet e chiamata dal codice applicativo. Parità
Integrazione principale POST HTTPS da Node, Python, Go, .NET, Ruby, PHP, Java, worker, job o proxy dell'interfaccia web. API C# fluida con tipizzazione forte, supporto IDE e costrutti .NET familiari. Parità
Posizionamento dell'ambiente Generatore Cloudflare Workers sull'edge; nessun servizio PDF, configurazione font o cluster di distribuzione nella vostra architettura. Gira dove gira la vostra app .NET; CPU, memoria, dipendenze native e pacchetti, distribuzione, monitoraggio e scala restano al vostro team. gPdf
Processo per codici a barre Elemento nativo `barcode` per formati 1D, 2D e GS1 (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode), con testo leggibile integrato. La documentazione ufficiale integra ZXing.Net, installato separatamente da NuGet e generato in SVG; identificatori di applicazione GS1 e framing FNC1 vanno cablati a mano. gPdf
Font e testo multilingue Font inclusi e gestiti dal servizio, selezione automatica implicita, modalità esplicite `prefer` / `strict` e sostituzione CJK per script (KR, JP, SC); i chiamanti non impacchettano file font in nessuna app. Include Lato e può caricare font da ambiente, directory di distribuzione e font personalizzati con catene di sostituzione, ma la sua documentazione avvisa che 'in most cloud deployments, few or no fonts are available.' gPdf
Password e permessi durante la generazione
QuestPDF supporta le stesse robustezze di cifratura e password utente / proprietario, ma come passaggio dopo la generazione sul file già creato, non direttamente nella chiamata di generazione.
Impostati direttamente nella richiesta di generazione: `settings.security` applica cifratura AES-128/256, password di apertura e del proprietario, e otto flag di permesso nella stessa chiamata `/api/v1/pdf/render`. Prima si genera, poi si cifra in una Document Operation separata: `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Iterazione sui modelli gPdf Studio progetta gli stessi modelli JSON che la produzione genera con `template_id + data`. QuestPDF Companion offre anteprima con hot reload, ispezione della gerarchia, strumenti per le coordinate e navigazione nel sorgente per documenti C#. Parità
Prezzo commerciale
Prezzi QuestPDF verificati sulle pagine pubbliche di licenza il 2026-06-02. I team .NET ad alto volume dovrebbero confrontare licenza + hosting con il prezzo per pagina di gPdf.
Basic da 5 USD/mese include 100.000 pagine; eccedenza da 0,00005 USD per pagina, con lo stesso calcolo per pagina pubblicato su ogni superficie. Gratis con termini Community MIT sotto 1 milione USD di ricavi lordi annui; licenze commerciali perpetue: Professional a 999 USD (fino a 10 sviluppatori) ed Enterprise a 2.999 USD (tutta l'organizzazione, senza conteggio sviluppatori), più imposte locali, ciascuna con un anno di aggiornamenti. Parità
Costi server e distribuzione Nessuna flotta server da distribuire per l'API pubblica; l'uso è fatturato per piano e pagine. I termini commerciali indicano progetti, server e distribuzioni illimitati; l'infrastruttura resta però posseduta dal cliente. Parità
PDF/A e fattura elettronica Sei profili PDF/A (1b/2b/3b/4/2u/3u) più PDF/UA-1, e una rotta Factur-X / ZUGFeRD ospitata con XML CII EN 16931 in PDF/A-3b, validazione lato servizio e residenza dati UE / globale. Forte supporto in codice per PDF/A, PDF/UA-1 e ZUGFeRD 2.1 / Factur-X; veraPDF e Mustang per la validazione li cablate voi. Parità
Dove vanno i dati del documento
QuestPDF mantiene i dati nel processo; gPdf li trasmette ma non li conserva: i log operativi tengono solo stato HTTP e durata, mai corpi richiesta.
L'API pubblica trasmette i dati della richiesta, ma il generatore è senza conservazione: il JSON della richiesta vive in un isolate Cloudflare Workers solo per la generazione (~4 ms tipici), mai archiviato, registrato o usato per addestramento. Residenza dati UE / globale e distribuzione on-prem / privata riducono o chiudono ulteriormente l'esposizione. I byte sono prodotti nel processo; i dati del documento non attraversano il vostro perimetro di fiducia verso una terza parte. Parità
Funzionamento offline / in rete isolata
QuestPDF gira offline senza configurazione; gPdf raggiunge lo stesso punto tramite una distribuzione privata enterprise.
L'API pubblica richiede rete; la distribuzione enterprise on-prem / privata esegue il generatore dentro la vostra infrastruttura per uso offline o isolato. Gira localmente senza chiave di licenza, server di attivazione o chiamate di rete durante l'esecuzione: il tipo di licenza si imposta in una riga di codice su base fiduciaria. Parità
Operazioni su PDF esistenti Genera nuovi PDF da richieste strutturate; non carica, unisce, decifra o modifica file esistenti. Document Operations su PDF esistenti: unione, riordino / inversione / filtro pagine, overlay, cifratura e decifratura 40/128/256-bit, allegati, metadati XMP e linearizzazione web. QuestPDF
Grafici e visualizzazione dati
Entrambi si appoggiano a una libreria per trasformare dati in grafico; QuestPDF lo genera nel documento, gPdf posiziona l'SVG / PNG che producete. QuestPDF è avanti su grafici integrati, mappe e Canvas.
Disegna grafica vettoriale con l'elemento `path` (dati SVG path) e forme, oppure incorpora un grafico SVG / PNG prodotto da qualunque libreria; non ha però motore grafici, mappe o API Canvas integrati. Integrazioni grafici di prima classe (ScottPlot, LiveCharts, Microcharts), mappe Mapbox e API Canvas SkiaSharp per grafica personalizzata. QuestPDF
Caso d'uso predefinito migliore Documenti aziendali di produzione condivisi tra team: etichette, fatture, ricevute, estratti, ticket e fatture elettroniche. Applicazioni C# che vogliono generazione documentale locale, piena proprietà del codice e nessuna dipendenza da servizio durante l'esecuzione. Parità

Quale scegliere

Scegli gPdf quando
  • La generazione PDF è infrastruttura condivisa da più servizi o linguaggi, non una funzione posseduta da una sola applicazione .NET.
  • Volete togliere generazione PDF, gestione font, geometria dei codici a barre e scalabilità regionale dall'architettura applicativa.
  • Il team vuole che i modelli cambino come `template_id + data`, non come distribuzioni di codice C#.
  • Vi serve generazione sull'edge vicino a magazzini, clienti o processi server senza distribuire un servizio PDF .NET in ogni regione.
  • Preferite un prezzo pubblicato per pagina e nessuna procedura di acquisto licenza commerciale prima della prima generazione in produzione.
Scegli QuestPDF quando
  • Il prodotto parte da .NET e il codice C# è la fonte naturale di riferimento per l'impaginazione del documento.
  • I dati dei documenti devono restare dentro il vostro perimetro e una distribuzione privata enterprise di gPdf non è sul tavolo.
  • Vi serve generazione offline o in rete isolata già pronta, senza configurare una distribuzione privata del generatore.
  • La generazione sta su un percorso sincrono critico per la latenza, dove una chiamata nel processo batte qualunque andata e ritorno di rete.
  • Vi servono operazioni su PDF esistenti: unione, estrazione pagine, overlay, decifratura o allegati dentro la stessa libreria.
  • Generate grafici, mappe o grafica SkiaSharp personalizzata dentro il documento (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Siete idonei ai termini Community MIT, oppure volete una licenza perpetua una tantum, e gestire localmente il generatore non è un peso.
Funzionalità

gPdf è un'API JSON a PDF all'edge progettata per fatture, documenti, etichette di spedizione, codici a barre, PDF/A e fatture elettroniche ad alto volume. Rendering PDF in millisecondi su scala edge globale, ottimizzato per una generazione documentale prevedibile e pronta per la produzione. Prezzi da infrastruttura, abbastanza bassi da sostituire la costruzione e la gestione della vostra infrastruttura PDF.

Funzionalità

QuestPDF è eccellente quando C# è il confine di prodotto

QuestPDF merita un confronto rispettoso. È una libreria moderna di generazione PDF per sviluppatori C#, con API fluida, tipizzazione forte, documentazione ampia, Companion App per anteprima e debug e un modello di licenza insolitamente chiaro per un PDF SDK.

La domanda di prodotto non è “quale dei due può creare un PDF?”. Entrambi possono. La domanda utile è dove deve vivere il confine PDF: dentro un’applicazione .NET che possiede impaginazione, byte e ciclo di vita, oppure come servizio infrastrutturale chiamato da più prodotti e linguaggi.

Guida rapida alla scelta

  • Scegliete QuestPDF quando C# è la fonte di riferimento del documento, l’app deve girare offline o vi servono operazioni locali su PDF esistenti.
  • Scegliete gPdf quando un unico livello PDF deve servire Node, Python, Go, .NET, job e sistemi regionali tramite la stessa API HTTP.
  • Scegliete gPdf quando le modifiche di impaginazione devono essere revisioni di modello, non ricompilazioni C# e ridistribuzioni di servizio.

Stessa famiglia documentale, diverso modello di proprietà

Con QuestPDF l’applicazione possiede la generazione PDF, e questo è un vero punto di forza: C# resta vicino al modello di dominio, gira e si debuga in locale, senza chiamate durante l’esecuzione a un’API esterna.

La contropartita è che il team possiede anche il resto della superficie di produzione:

  • CPU e memoria per generare.
  • Scoperta font e sostituzione in ogni ambiente di distribuzione.
  • Integrazione libreria codici a barre e QA di stampa.
  • Dipendenze native e distribuzione per grafici o grafica personalizzata.
  • Monitoraggio, nuovi tentativi e gestione errori.
  • Distribuzione regionale quando utenti o magazzini sono globali.
  • Rilasci ogni volta che cambia l’impaginazione del documento.

Con gPdf, quella superficie si sposta fuori dall’applicazione: l’app invia un DocumentRequest o template_id + data, e il servizio si assume generatore, ambiente sull’edge, font, primitive per codici a barre, output PDF/A e pacchetto di fattura elettronica. È meno attraente se volete ogni dettaglio in C#, più attraente se la generazione PDF deve essere un livello di utilità chiamabile da qualunque architettura.

Tre compromessi che un’API ospitata deve dichiarare chiaramente

Molte presentazioni “libreria vs API” saltano le tre domande che un architetto .NET chiede per prime. Un confronto corretto le risponde apertamente.

1. Dove vanno i dati del documento. Questa pagina parla in gran parte di fatture, estratti e fatture elettroniche: documenti pieni di nomi, indirizzi, codici fiscali, partite IVA e importi. Con QuestPDF quei byte vengono costruiti dentro il vostro processo e non escono. L’API pubblica gPdf trasmette i dati della richiesta al generatore, ma il generatore è senza conservazione: il JSON della richiesta resta in un isolate V8 di Cloudflare Workers solo per la generazione (~4 ms tipici) e viene rilasciato quando la risposta completa; non viene mai archiviato, registrato, campionato o usato per addestramento, con log operativi limitati a stato HTTP e durata (security, DPA). Scelta di residenza dati UE / globale e distribuzione enterprise on-prem / privata riducono o chiudono ulteriormente l’esposizione. Detto questo, mantenere la generazione nel processo senza configurazione è una ragione legittima, a volte decisiva, per cui un team finanziario o del settore pubblico sceglie QuestPDF.

2. Modalità di errore. Una libreria non ha una terza parte che può andare giù; la generazione può fallire solo sull’infrastruttura che già possedete. Un’API ospitata aggiunge una dipendenza di disponibilità che non controllate. Il modo corretto di adottare gPdf è trattare le chiamate di generazione come qualunque chiamata esterna: tempi limite, nuovi tentativi, coda e idealmente una modalità degradata. Se la generazione documentale sta su un percorso sincrono critico, pesate “gestirla voi” contro “dipendere dallo SLA di un fornitore”.

3. Profilo di latenza. La generazione nel processo è una chiamata di funzione senza rete. Una chiamata ospitata è un’andata e ritorno di rete. Per job batch e asincroni è rumore. Per “l’utente clicca e il PDF deve apparire subito”, stare nel processo è strutturalmente più veloce: i PoP sull’edge di gPdf rendono il salto piccolo, ma resta comunque TLS più andata e ritorno; QuestPDF è una chiamata di metodo.

Nessuno di questi punti rende gPdf la scelta sbagliata; definiscono quando è quella giusta: team i cui dati documentali possono uscire dal processo, i cui flussi tollerano un passaggio di rete e che preferiscono dipendere dalla disponibilità di un fornitore invece di gestire una flotta di generatori.

Modello di licenza e prezzo

La pagina pubblica di licenza QuestPDF dice che una licenza commerciale è richiesta solo per aziende sopra 1 milione USD di ricavi lordi annui. Il livello Community è gratuito per individui idonei, progetti open source, non-profit e aziende sotto quella soglia, con termini MIT. La stessa pagina pubblica elenca due livelli commerciali perpetui: Professional a 999 USD più imposte locali per team fino a 10 sviluppatori, ed Enterprise a 2.999 USD più imposte locali per tutta l’organizzazione, senza conteggio sviluppatori. Entrambi includono un anno di aggiornamenti e progetti, server e distribuzioni illimitati, e la licenza non scade mai per l’ultima versione ricevuta.

Anche il modello di applicazione è insolitamente leggero. La licenza si imposta con una sola riga, QuestPDF.Settings.License = LicenseType.Community;, senza chiave di licenza, server di attivazione e, secondo la pagina di configurazione di QuestPDF, senza chiamate di rete né dati che lasciano la macchina. È un modello basato sulla fiducia: selezionate il livello per cui siete idonei. Non c’è una fattura fornitore per documento, e una licenza pagata gira ovunque, anche completamente offline.

gPdf applica il prezzo direttamente al servizio di generazione. Il piano pubblico Basic parte da 5 USD/mese per 100.000 pagine, con eccedenza da 0,00005 USD per pagina. È una fattura fornitore, ma rimuove anche il progetto separato di gestire la generazione PDF: nessun cluster di generazione, nessun percorso di distribuzione NuGet, nessun pool caldo regionale, nessun pacchetto font per app e nessun servizio PDF da patchare.

Quindi il confronto dei costi non è “999 USD contro 5 USD”: la licenza è la riga piccola. Il confronto reale è:

Totale QuestPDF = licenza (una tantum) + vostro hosting + tempo ingegneri + reperibilità
Totale gPdf     = fattura per pagine (infrastruttura, font, scalabilità e presenza sull'edge incluse)

Con il calcolo pubblico per pagina, l’eccedenza gPdf è 0,05 USD ogni 1.000 pagine (50 USD per 1 milione, 500 USD per 10 milioni). Una licenza Enterprise una tantum da 2.999 USD va in pareggio con quel conto solo intorno a ~60 milioni di pagine, e quel calcolo ignora hosting e mesi-ingegnere di QuestPDF, che spostano il vero punto di pareggio molto più avanti a favore di gPdf salvo che abbiate già un’infrastruttura di generazione quasi gratuita. Regola pratica: se dovreste costruire e presidiare un servizio di generazione solo per usare la libreria, gPdf di solito vince sul costo totale molto prima che il conto per pagina raggiunga la licenza; se quell’infrastruttura esiste già ed è quasi gratuita per voi, la licenza perpetua vince su larga scala.

Flusso di sviluppo: C# fluido o modelli

L’API fluida di QuestPDF è adatta quando gli sviluppatori possiedono la forma del documento. Tipizzazione forte, catene di metodi, componenti C# riutilizzabili, rifattorizzazioni nell’IDE e Companion App hanno senso quando il PDF fa parte del codice applicativo.

gPdf si adatta a un flusso diverso. Gli sviluppatori possono ancora scrivere JSON direttamente, ma i sistemi di produzione di solito si spostano verso modelli. Un designer, operatore o ingegnere regola l’impaginazione in gPdf Studio. L’impaginazione approvata diventa un modello, e il servizio server continua a generare con template_id + data.

Questa differenza pesa quando il documento cambia spesso. Se cambia un’etichetta corriere, una fattura, una bolla di accompagnamento o un estratto, gPdf può mantenere stabile l’ambiente di esecuzione mentre si muove solo il modello. Con QuestPDF l’impaginazione è codice C#, quindi il percorso normale è modifica codice, test, build, distribuzione e piano di rollback.

Nessun flusso è universalmente migliore: QuestPDF ottimizza per sviluppatori C# che vogliono il documento come codice; gPdf per modelli operativi condivisi tra sistemi.

Conformità: entrambi i prodotti sono seri

Questo non è un confronto in cui gPdf vince dicendo che il concorrente non ha funzionalità di conformità. Il materiale pubblico attuale di QuestPDF elenca supporto forte agli standard, inclusi PDF/A, PDF/UA-1 e fatturazione elettronica EN 16931 tramite un esempio ZUGFeRD 2.1 / Factur-X basato sullo standard UN/CEFACT Cross Industry Invoice (CII). L’esempio imposta PdfA = true, incorpora il file factur-x.xml con AddAttachment(), estende il documento con metadati XMP e valida il risultato con veraPDF (per PDF/A-3b) e Mustang Project (per ZUGFeRD). È una ricetta completa e onesta, e la vostra pipeline possiede ogni passaggio.

gPdf impacchetta gli stessi standard come contratto API. JSON Render espone sei profili PDF/A (1b, 2b, 3b, 4, 2u, 3u) più PDF/UA-1 tramite settings.profile, Template Render riusa lo stesso modello documento, ed E-Invoice Render espone la rotta dedicata POST /api/v1/e-invoice/render che produce pacchetti Factur-X / ZUGFeRD PDF/A-3b con XML CII EN 16931 incorporato. La differenza rispetto alla ricetta QuestPDF è cosa fa il servizio per voi: gPdf esegue lato servizio la validazione PDF/A-3b e fattura elettronica, supporta consegna sincrona diretta o tramite oggetto da interrogare, e offre residenza dati UE o globale come impostazioni richiesta invece che come passaggi da assemblare e gestire. QuestPDF è adatto quando quella validazione deve vivere dentro la vostra pipeline .NET; gPdf quando deve essere un contratto ospitato condiviso da molti sistemi.

Font e codici a barre: il vero confronto è lo sforzo di integrazione

QuestPDF ha un modello font capace. Include Lato 2.015 di default, carica automaticamente font di sistema e della directory di distribuzione, permette di registrare font personalizzati tramite FontManager e supporta catene di sostituzione. Questo dà controllo agli sviluppatori. Ma la stessa documentazione è schietta sul punto debole: “in most cloud deployments, few or no fonts are available, which may lead to unexpected results,” e raccomanda di disabilitare i font dell’ambiente e registrare esplicitamente ciò che serve. In altre parole, su container o destinazioni serverless l’ambiente font è vostro da pianificare, spedire e testare; un glifo mancante diventa un carattere segnaposto oppure, se abilitate CheckIfAllTextGlyphsAreAvailable, un’eccezione.

gPdf rende i font parte del confine di servizio. Il generatore include un set per più sistemi di scrittura: latino, greco, cirillico, arabo, ebraico, bengalese, tamil, thai, vietnamita, monospace e CJK con sostituzione per script verso Noto KR / JP / SC. Risolve le scelte silenziose con selezione automatica implicita, e le scelte esplicite con prefer o strict. I chiamanti non spediscono un font CJK, non registrano asset Noto in un’app .NET e non tarano la sostituzione per ogni destinazione di distribuzione. Inviano dati; il generatore si assume l’ambiente font, uguale in ogni regione.

Il confronto sui codici a barre ha forma simile. La documentazione sui codici a barre di QuestPDF mostra un approccio solido con ZXing.Net generato come SVG vettoriale, e nota esplicitamente che ZXing.Net non è incluso nel pacchetto QuestPDF: lo installate da NuGet e lo cablate:

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

Con gPdf, la generazione dei codici a barre è un elemento dello schema di prima classe. La richiesta dichiara formato, contenuto, dimensione fisica e una riga leggibile opzionale; i formati GS1 sono nativi, quindi gli identificatori di applicazione vanno direttamente 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" }
}

Per una singola app .NET, installare ZXing.Net e testare l’output può essere facile. Per molti servizi e modelli, soprattutto carichi logistici e retail che richiedono GS1-128, SSCC, GTIN, GS1 DataMatrix o GS1 QR con riga leggibile, spostare il comportamento dei codici a barre dentro l’API documento è più semplice da mantenere che ricablare ZXing in ogni servizio.

Dove QuestPDF vince chiaramente

Oltre a girare offline, mantenere i dati documentali dentro il vostro perimetro (coperto sopra) e ai casi in cui il codice PDF stesso è parte del prodotto, cioè quando un team deve ispezionare, estendere o possedere il percorso di generazione, QuestPDF ha due aree di capacità chiaramente fuori dall’ambito di gPdf:

  • Operazioni su PDF esistenti. QuestPDF può caricare file esistenti e unirli, selezionare / riordinare / invertire / filtrare pagine, applicare overlay, aggiungere allegati, impostare metadati XMP, linearizzare per consegna web e sia cifrare sia decifrare con sicurezza 40/128/256-bit. gPdf può proteggere con password e permessi i PDF che genera, ma non apre, unisce o decifra file che non ha creato.
  • Grafici, mappe e grafica personalizzata. QuestPDF integra librerie di grafici (ScottPlot, LiveCharts, Microcharts), incorpora mappe Mapbox ed espone un Canvas SkiaSharp per disegno 2D arbitrario. gPdf può disegnare grafica vettoriale con l’elemento path (dati SVG path) o incorporare un grafico SVG / PNG prodotto a monte, ma non ha motore grafici, mappe o Canvas integrati; se grafici guidati dai dati sono centrali, quella strumentazione vive meglio con QuestPDF.

Dove gPdf vince chiaramente

gPdf vince quando un’organizzazione non vuole che ogni team prodotto possieda il proprio servizio PDF: architetture poliglotte, flussi globali e sistemi ERP / OMS / WMS / e-commerce / fintech / ticketing che generano documenti da dati strutturati, con modelli che cambiano indipendentemente dal codice. In questi ambienti una libreria locale spesso parte economica e diventa una flotta: un servizio per linguaggio, un percorso di distribuzione per regione, un piano font per container, una suite di regressioni codici a barre per team. gPdf trasforma quella flotta in un unico contratto HTTP.

Serverless rende il confine più chiaro. Su AWS Lambda, Cloud Run o Azure Functions, QuestPDF gira comunque dentro l’applicazione: il team impacchetta ambiente .NET, font, dipendenze native e CPU / memoria sufficienti per il picco PDF, e possiede gli avvii a freddo. gPdf è già il servizio di generazione: la funzione invia una piccola richiesta template_id + data sull’edge e riceve byte PDF, senza generatore da scaldare o worker regionale da scalare.

Forma della migrazione

La migrazione da QuestPDF a gPdf non è una riscrittura riga per riga. È un cambio di confine: il codice C# che costruisce il PDF diventa una richiesta documento JSON oppure un modello pubblicato.

Prima / dopo — la chiamata C# che costruisce il documento si riduce a un POST HTTP (clic per espandere)
- // 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();

Dopo lo spostamento del confine, le modifiche di impaginazione possono diventare revisioni di modello invece di distribuzioni applicative. L’applicazione continua a possedere dati aziendali e decisioni di processo; gPdf si assume la generazione.

Nota su prezzi e fonti

Le informazioni QuestPDF in questa pagina sono state verificate il 2026-06-02 su fonti ufficiali QuestPDF: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management e ZUGFeRD example. Prezzi e pagine funzionalità possono cambiare; i team acquisti dovrebbero ricontrollare la pagina del fornitore prima di una decisione d’acquisto. QuestPDF e i marchi collegati appartengono ai rispettivi proprietari, e questo confronto non è approvato da loro.

Scenari correlati di generazione PDF

I team che confrontano QuestPDF e gPdf di solito stanno decidendo se possedere una libreria C# locale o usare un livello PDF condiviso. Per i carichi strutturati, partite da API da JSON a PDF, API PDF per fatture e API codici a barre GS1. Per requisiti di conformità, leggete API PDF/A, API ZUGFeRD e API Factur-X. Per etichette operative, vedete API PDF per etichette di spedizione.

FAQ

gPdf sostituisce QuestPDF?

No. gPdf sostituisce la necessità di gestire un servizio di generazione PDF per documenti aziendali strutturati. QuestPDF resta una forte libreria C# locale quando il PDF deve essere generato dentro l’applicazione.

QuestPDF è gratuito?

La pagina pubblica di licenza QuestPDF dice che il livello Community è gratuito con termini MIT per individui idonei, progetti open source, non-profit e aziende sotto 1 milione USD di ricavi lordi annui. Le aziende sopra quella soglia hanno bisogno di una licenza commerciale perpetua: Professional a 999 USD più imposte locali per un massimo di 10 sviluppatori, oppure Enterprise a 2.999 USD più imposte locali per tutta l’organizzazione, ciascuna con un anno di aggiornamenti incluso.

gPdf può generare grafici o mappe come QuestPDF?

Non come motore integrato. QuestPDF integra librerie di grafici (ScottPlot, LiveCharts, Microcharts), mappe Mapbox e un Canvas SkiaSharp che genera dentro il documento. gPdf può comunque disegnare grafici vettoriali con l’elemento path (che accetta dati SVG path) e forme, oppure incorporare come image un SVG / PNG prodotto da qualunque libreria grafici. La differenza è che QuestPDF calcola e genera il grafico nel processo, mentre con gPdf producete voi l’arte del grafico e gPdf la posiziona. Se grafici guidati dai dati o mappe sono centrali per il documento, QuestPDF è più adatto.

Quale prodotto costa meno?

Dipende dal confine. QuestPDF può costare meno per team .NET idonei ai termini Community o che gestiscono già l’infrastruttura di generazione. gPdf può costare meno quando l’alternativa è costruire, ospitare e mantenere un servizio PDF attraverso prodotti o regioni.

gPdf archivia o registra i dati dei miei documenti?

No. Il JSON che inviate e il PDF che gPdf restituisce non vengono archiviati. Ogni richiesta genera dentro un singolo isolate V8 di Cloudflare Workers, resta in memoria solo per la generazione, circa 4 ms tipici, e viene rilasciata quando lo stream di risposta completa; gPdf non conserva, registra, campiona o usa per addestramento il contenuto DocumentRequest. I log operativi tengono solo stato HTTP e durata per 30 giorni e non contengono corpi richiesta. Vedete security policy, privacy policy e DPA. Per carichi che non possono trasmettere dati in alcun modo, la distribuzione on-prem / privata li mantiene dentro il vostro perimetro.

QuestPDF può funzionare senza accesso a Internet?

Sì. La pagina di configurazione licenza di QuestPDF dice che non c’è chiave di licenza o server di attivazione, e che i calcoli sono eseguiti localmente. È una delle ragioni più chiare per scegliere QuestPDF.

gPdf può generare impaginazioni C# QuestPDF arbitrarie?

No. gPdf non esegue codice di impaginazione C#. Migrare significa convertire la forma del documento in una richiesta JSON gPdf o in un modello gPdf salvato.