Comparações

gPdf vs QuestPDF para geração de documentos .NET

QuestPDF é uma excelente biblioteca PDF para C#. gPdf é uma API hospedada no edge. Compare licenças, execução, fluxo de modelos, conformidade, códigos de barras e quando escolher cada um.

Resumo

Escolha pelo seu limite de confiança. QuestPDF mantém geração e dados dentro do processo .NET; em troca, sua equipe assume fontes, códigos de barras, escala e conformidade. gPdf transforma geração em uma chamada HTTP de qualquer linguagem; em troca, envia dados a um gerador de terceiro e depende da disponibilidade dele. Apps .NET que priorizam controle local, privacidade e offline tendem a escolher QuestPDF; equipes poliglotas que querem infraestrutura PDF no edge com preço por página tendem a escolher gPdf.

Lado a lado

Critério gPdf QuestPDF Vantagem
Fronteira do produto
A escolha certa depende de você querer contratar um serviço ou assumir o caminho de geração.
API hospedada no edge para JSON Render, Template Render e E-Invoice Render. Biblioteca local C# / .NET instalada via NuGet e chamada pelo código da aplicação. Empate
Integração principal HTTPS POST a partir de Node, Python, Go, .NET, Ruby, PHP, Java, workers, tarefas ou proxies de interface. API fluente de C# com tipagem forte, suporte de IDE e construções familiares do .NET. Empate
Local do ambiente de execução Gerador no edge em Cloudflare Workers; nenhum serviço PDF, configuração de fontes ou cluster de implantação dentro da sua pilha. Roda onde o seu app .NET roda; sua equipe assume CPU, memória, dependências nativas/de pacote, implantação, monitoramento e escala. gPdf
Fluxo de código de barras Elemento nativo `barcode` cobrindo formatos 1D, 2D e GS1 (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode), com posicionamento integrado de texto legível. A documentação oficial integra ZXing.Net, instalado separadamente via NuGet e renderizado como SVG; identificadores de aplicação GS1 e enquadramento FNC1 são conectados manualmente. gPdf
Fontes e texto multilíngue Fontes empacotadas e controladas pelo serviço, seleção automática implícita, modos explícitos `prefer` / `strict` e substituição CJK por escrita (KR, JP, SC); chamadores não empacotam arquivos de fonte em nenhuma aplicação. Inclui Lato e pode carregar fontes do ambiente, do diretório de implantação e fontes personalizadas com cadeias de substituição, mas a própria documentação alerta que na maioria das implantações em nuvem há poucas fontes ou nenhuma. gPdf
Senha e permissões na geração
QuestPDF suporta as mesmas forças de criptografia e senhas de usuário/proprietário, mas como pós-processamento do arquivo gerado, não no próprio fluxo da geração.
Definidas dentro da própria requisição de geração: `settings.security` aplica criptografia AES-128/256, senhas de abertura e de proprietário, e 8 flags de permissão na mesma chamada `/api/v1/pdf/render`. Primeiro gera, depois criptografa em uma Document Operation separada: `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Iteração de modelos gPdf Studio desenha os mesmos modelos JSON que a produção gera com `template_id + data`. QuestPDF Companion oferece preview com hot reload, inspeção de hierarquia, ferramentas de coordenadas e navegação para o código-fonte de documentos C#. Empate
Preço comercial
O preço do QuestPDF foi verificado nas páginas públicas de licenciamento em 2026-06-02. Equipes .NET de alto volume devem comparar licença + hospedagem com o preço por página do gPdf.
O plano Basic custa 5 USD/mês e inclui 100.000 páginas; excedente a partir de 0,00005 USD por página, com a mesma conta pública por página em todas as superfícies. Gratuito nos termos Community MIT abaixo de 1 milhão USD de receita bruta anual; licenças comerciais perpétuas listam Professional por 999 USD (até 10 desenvolvedores) e Enterprise por 2.999 USD (organização inteira, sem contar desenvolvedores), mais impostos locais, cada uma com 1 ano de atualizações. Empate
Custos de servidor e implantação Não há frota de servidores para implantar na API pública; o uso é cobrado por plano e páginas. Os termos comerciais anunciam projetos, servidores e implantações ilimitados; a infraestrutura continua sendo do cliente. Empate
PDF/A e fatura eletrônica Seis perfis PDF/A (1b/2b/3b/4/2u/3u), PDF/UA-1 e um endpoint hospedado Factur-X / ZUGFeRD com XML EN 16931 CII em PDF/A-3b, validação no servidor e residência de dados UE / global. Forte suporte a PDF/A, PDF/UA-1 e ZUGFeRD 2.1 / Factur-X em código; você conecta veraPDF e Mustang para validar. Empate
Para onde vão os dados do documento
QuestPDF mantém dados dentro do processo; gPdf transmite, mas não retém nada. Logs operacionais guardam apenas status HTTP e duração, nunca corpos de requisição.
A API pública transmite a carga útil, mas o gerador é sem retenção: o JSON da requisição vive em um isolate Cloudflare Workers apenas durante a geração (típico de ~4 ms), nunca é armazenado, registrado em logs ou usado para treinamento. Residência de dados UE / global e implantação local / privada reduzem ou fecham ainda mais a exposição. Os bytes são produzidos dentro do processo; os dados do documento não cruzam sua fronteira de confiança para um terceiro. Empate
Operação offline / rede isolada
QuestPDF roda offline sem configuração; gPdf chega ao mesmo ponto por meio de uma implantação privada empresarial.
A API pública exige acesso à rede; implantação empresarial local / privada roda o gerador dentro da sua própria infraestrutura para operação offline ou em rede isolada. Roda localmente sem chave de licença, sem servidor de ativação e sem chamadas de rede em tempo de execução; o tipo de licença é definido em uma linha de código em um modelo de confiança. Empate
Operações em PDFs existentes Gera novos PDFs a partir de requisições estruturadas; não carrega, mescla, descriptografa nem edita arquivos existentes. Document Operations em PDFs existentes: mesclar, reordenar / inverter / filtrar páginas, sobreposições, criptografia e descriptografia 40/128/256-bit, anexos, metadados XMP e linearização para web. QuestPDF
Gráficos e visualização de dados
Ambos dependem de uma biblioteca de gráficos para transformar dados em visualização; QuestPDF gera dentro do documento, gPdf posiciona o SVG / PNG que você produz. QuestPDF lidera em gráficos integrados, mapas e Canvas.
Desenha arte vetorial com o elemento `path` (SVG path data) e formas, ou incorpora um gráfico SVG / PNG produzido por qualquer biblioteca; não tem motor de gráficos, mapas ou API Canvas embutidos. Integrações de gráficos de primeira classe (ScottPlot, LiveCharts, Microcharts), mapas Mapbox e uma API Canvas SkiaSharp para gráficos personalizados. QuestPDF
Melhor caso de uso padrão Documentos de negócio em produção compartilhados entre equipes: etiquetas, faturas, recibos, extratos, ingressos e faturas eletrônicas. Aplicações C# que querem geração local de documentos, propriedade total do código e nenhuma dependência de serviço em tempo de execução. Empate

Quando escolher cada um

Escolha gPdf quando
  • A geração de PDF é infraestrutura compartilhada por vários serviços ou linguagens, não uma funcionalidade pertencente a uma única aplicação .NET.
  • Você quer remover da pilha da aplicação a geração PDF, gestão de fontes, geometria de códigos de barras e escala regional.
  • Sua equipe quer que mudanças de diagramação sejam `template_id + data`, não implantações de código C#.
  • Você precisa de geração no edge perto de armazéns, clientes ou tarefas de servidor sem implantar um serviço PDF .NET em cada região.
  • Você prefere preço público por página e não quer passar por aquisição de licença comercial antes da primeira geração em produção.
Escolha QuestPDF quando
  • Seu produto é orientado a .NET e o código C# é a fonte de referência natural para a diagramação do documento.
  • Os dados do documento precisam ficar dentro do seu perímetro, e uma implantação privada empresarial do gPdf não está em pauta.
  • Você precisa de geração offline ou em rede isolada já de fábrica, sem configurar uma implantação privada de geração.
  • A geração fica em um caminho síncrono crítico de latência, onde uma chamada dentro do processo vence qualquer ida e volta de rede.
  • Você precisa de operações em PDFs existentes — mesclar, extrair páginas, sobreposições, descriptografia ou anexos — dentro da mesma biblioteca.
  • Você renderiza gráficos, mapas ou desenhos personalizados em SkiaSharp dentro do documento (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Você se qualifica para os termos Community MIT, ou quer uma licença perpétua de pagamento único, e operar o renderizador localmente não é um peso.
Capacidades

gPdf é uma API edge-native JSON-para-PDF criada para faturas, documentos, etiquetas de envio, códigos de barras, PDF/A e faturas eletrônicas em alto volume. Renderização de PDF em milissegundos em escala edge global — otimizada para geração de documentos previsível e de nível industrial. Preço de nível infraestrutura, baixo o suficiente para substituir a construção e operação da sua própria infraestrutura PDF.

Capacidades

QuestPDF é excelente quando C# é a fronteira do produto

QuestPDF merece uma comparação respeitosa. É uma biblioteca moderna de geração de PDF para desenvolvedores C#, com API fluente, tipagem forte, documentação ampla, Companion App para prévia e depuração, e um modelo de licenciamento incomumente claro para um SDK PDF.

A pergunta de produto não é “qual deles cria um PDF?”. Ambos criam. A pergunta útil é onde a fronteira do PDF deve morar: dentro de uma aplicação .NET que possui diagramação, bytes e ciclo de vida, ou como um serviço de infraestrutura chamado por vários produtos e linguagens.

Guia rápido de decisão

  • Escolha QuestPDF quando C# for a fonte de referência do documento, a aplicação precisar rodar offline ou você precisar de operações locais em PDFs existentes.
  • Escolha gPdf quando uma única camada PDF deve atender Node, Python, Go, .NET, jobs e sistemas regionais pela mesma HTTP API.
  • Escolha gPdf quando mudanças de diagramação devem ser revisões de modelo, não recompilações C# e reimplantações de serviço.

Mesma família de documentos, modelo de propriedade diferente

Com QuestPDF, a aplicação é responsável pela geração de PDF. É uma força real: C# fica perto do seu modelo de domínio, roda e depura localmente, sem chamada em tempo de execução para uma API externa.

A contrapartida é que sua equipe também assume o restante da superfície de produção:

  • CPU e memória para renderização.
  • Descoberta de fontes e substituição em cada ambiente de implantação.
  • Integração de biblioteca de código de barras e QA de impressão.
  • Pacotes nativos e preocupações de implantação para gráficos ou integrações visuais personalizadas.
  • Monitoramento, retentativas e tratamento de falhas.
  • Implantação regional quando usuários ou armazéns são globais.
  • Lançamentos de versão sempre que a diagramação do documento muda.

Com gPdf, essa superfície se move para fora: a aplicação envia um DocumentRequest ou template_id + data, e o serviço assume o gerador, o ambiente no edge, as fontes, as primitivas de código de barras, a saída PDF/A e o empacotamento de fatura eletrônica. É menos atraente se você quer cada detalhe em C#; mais atraente se a geração de PDF deve ser uma camada utilitária chamável por qualquer pilha.

Três trade-offs que uma API hospedada precisa responder honestamente

A maioria dos argumentos “biblioteca vs API” pula as três perguntas que um arquiteto .NET faz primeiro. Uma comparação justa responde a elas em voz alta.

1. Para onde vão os dados do documento. Esta página fala principalmente de faturas, extratos e faturas eletrônicas: documentos cheios de nomes, endereços, IDs fiscais e valores. Com QuestPDF, esses bytes são montados dentro do seu processo e nunca saem. A API pública do gPdf transmite a carga útil ao gerador, mas o gerador é sem retenção: o JSON da requisição fica em um isolate V8 do Cloudflare Workers apenas durante a geração (típico de ~4 ms) e é liberado quando a resposta termina; nunca é armazenado, registrado em logs, amostrado ou usado para treinamento, com logs operacionais limitados a status HTTP e duração (security, DPA). A seleção de residência de dados UE / global e a implantação empresarial local / privada reduzem ou fecham ainda mais a exposição. Mesmo assim, manter a geração dentro do processo sem configuração é uma razão legítima, às vezes decisiva, para uma equipe financeira ou do setor público escolher QuestPDF.

2. O modo de falha. Uma biblioteca não tem um terceiro que possa ficar indisponível; a geração só falha na infraestrutura que você já possui. Uma API hospedada adiciona uma dependência de disponibilidade que você não controla. A forma correta de adotar gPdf é tratar chamadas de geração como qualquer chamada externa: tempo limite, nova tentativa, fila e, idealmente, alternativa em modo degradado. Se a geração de documentos está em um caminho síncrono crítico, pese “operar por conta própria” contra “depender da disponibilidade de um fornecedor”.

3. O perfil de latência. Geração dentro do processo é uma chamada de função sem rede. Uma chamada hospedada é uma ida e volta de rede. Para lotes e tarefas assíncronas, isso é ruído. Para “o usuário clicou e o PDF precisa aparecer agora”, dentro do processo é estruturalmente mais rápido. Os PoPs edge do gPdf reduzem o salto, mas ainda é TLS mais uma ida e volta; no QuestPDF, é uma chamada de método.

Nada disso torna gPdf a escolha errada; isso define quando ele é a escolha certa: equipes cujos dados de documento podem sair do processo, cujos fluxos toleram um salto de rede e que preferem depender da disponibilidade de um fornecedor a operar uma frota de geração.

Licenciamento e modelo de preço

A página pública de licenciamento do QuestPDF diz que uma licença comercial só é exigida para empresas acima de 1 milhão de USD em receita bruta anual. O nível Community é gratuito, sob termos MIT, para indivíduos elegíveis, projetos open source, organizações sem fins lucrativos e empresas abaixo desse limite. A mesma página pública lista dois níveis comerciais perpétuos: Professional por 999 USD mais impostos locais para equipes de até 10 desenvolvedores, e Enterprise por 2.999 USD mais impostos locais cobrindo a organização inteira sem contar desenvolvedores. Ambos incluem um ano de atualizações e projetos, servidores e implantações ilimitados; a licença nunca expira para a última versão recebida.

O modelo de fiscalização também é incomumente leve. A licença é definida com uma única linha: QuestPDF.Settings.License = LicenseType.Community;. Não há chave de licença, servidor de ativação e, segundo a própria página de configuração do QuestPDF, não há chamadas de rede nem dados saindo da máquina. É um modelo baseado em confiança: você seleciona o nível para o qual se qualifica. Não há conta por documento do fornecedor, e uma licença paga roda em qualquer lugar, inclusive totalmente offline.

gPdf precifica diretamente o serviço de geração. O plano Basic público começa em 5 USD/mês para 100.000 páginas, com excedente a partir de 0,00005 USD por página. Isso é uma conta de fornecedor, mas também remove o projeto separado de operar geração de PDF: sem cluster de geração, sem caminho de implantação NuGet, sem pool aquecido regional, sem pacote de fontes por app e sem serviço PDF para corrigir.

Então a comparação de custo não é “999 USD vs 5 USD”; a licença é a linha pequena. A comparação real é:

QuestPDF total = licença (pagamento único) + sua hospedagem + tempo de engenharia + plantão
gPdf total     = conta por página (infraestrutura, fontes, escala e edge incluídos)

Pela conta pública por página, o excedente do gPdf é 0,05 USD por 1.000 páginas (50 USD por 1 milhão, 500 USD por 10 milhões). Uma licença Enterprise única de 2.999 USD só empata com essa conta perto de ~60 milhões de páginas, e esse número ignora hospedagem e meses de engenharia do QuestPDF, que empurram o ponto real de cruzamento muito mais a favor do gPdf, a menos que você já opere a infraestrutura de geração a custo muito baixo. Regra prática: se você teria que construir e manter uma equipe para um serviço de geração apenas para usar a biblioteca, gPdf costuma ganhar em custo total muito antes de a conta por página alcançar a licença; se essa infraestrutura já existe e é quase gratuita para você, a licença perpétua vence em escala.

Fluxo de desenvolvimento: C# fluente vs modelos

A API fluente do QuestPDF encaixa bem quando desenvolvedores são responsáveis pela forma do documento. Tipagem forte, cadeias de métodos, componentes C# reutilizáveis, refatorações no IDE e Companion App fazem sentido quando o PDF faz parte do código da aplicação.

gPdf encaixa em outro fluxo. Desenvolvedores ainda podem escrever JSON diretamente, mas sistemas de produção geralmente avançam para modelos. Um designer, operador ou engenheiro ajusta a diagramação no gPdf Studio. A diagramação aprovada vira modelo, e o servidor continua gerando com template_id + data.

Essa diferença importa quando o documento muda com frequência. Se uma etiqueta de transportadora, fatura, romaneio ou extrato muda, gPdf pode manter o ambiente de execução estável enquanto apenas o modelo muda. Com QuestPDF, a diagramação é código C#, então o caminho normal é mudança de código, teste, build, implantação e plano de reversão.

Nenhum fluxo é universalmente melhor: QuestPDF otimiza para desenvolvedores C# que querem o documento como código; gPdf para modelos operacionais compartilhados entre sistemas.

Conformidade: os dois produtos são sérios

Esta não é uma comparação em que gPdf vence dizendo que o concorrente não tem recursos de conformidade. O material público atual do QuestPDF lista forte suporte a padrões, incluindo PDF/A, PDF/UA-1 e faturamento eletrônico EN 16931 por meio de um exemplo ZUGFeRD 2.1 / Factur-X baseado no padrão UN/CEFACT Cross Industry Invoice (CII). Esse exemplo define PdfA = true, embute a carga factur-x.xml com AddAttachment(), estende o documento com metadados XMP e valida o resultado com veraPDF (para PDF/A-3b) e Mustang Project (para ZUGFeRD). É uma receita completa e honesta, e seu pipeline possui cada etapa.

gPdf empacota os mesmos padrões como contrato de API. JSON Render expõe seis perfis PDF/A (1b, 2b, 3b, 4, 2u, 3u) mais PDF/UA-1 via settings.profile, Template Render reutiliza o mesmo modelo de documento, e E-Invoice Render expõe um endpoint dedicado POST /api/v1/e-invoice/render que produz pacotes Factur-X / ZUGFeRD PDF/A-3b com XML EN 16931 CII embutido. A diferença em relação à receita do QuestPDF é o que o serviço faz por você: gPdf executa a validação PDF/A-3b e de fatura eletrônica no servidor, suporta entrega síncrona inline ou por objeto consultado, e oferece residência UE ou global como configurações de requisição, não como etapas que você monta e opera. QuestPDF encaixa quando essa validação deve viver dentro do seu pipeline .NET; gPdf quando ela deve ser um contrato hospedado compartilhado por muitos sistemas.

Fontes e códigos de barras: o esforço de integração é a comparação real

QuestPDF tem um modelo de fontes competente. Ele inclui Lato 2.015 por padrão, carrega automaticamente fontes do sistema e do diretório de implantação, permite registrar fontes personalizadas via FontManager e suporta cadeias de substituição. Isso dá controle aos desenvolvedores. Mas a mesma documentação é franca sobre a pegadinha: na maioria das implantações em nuvem há poucas fontes ou nenhuma, o que pode causar resultados inesperados; ela recomenda desabilitar fontes do ambiente e registrar explicitamente o que você precisa. Em outras palavras, em contêiner ou ambiente sem servidor, o ambiente de fontes é seu para planejar, empacotar e testar; um glifo ausente vira caractere substituto ou, se você habilitar CheckIfAllTextGlyphsAreAvailable, uma exceção.

gPdf transforma fontes em parte da fronteira do serviço. O gerador empacota um conjunto multi-escrita: Latin, Greek, Cyrillic, Arabic, Hebrew, Bengali, Tamil, Thai, Vietnamese, monospace e CJK com substituição por escrita para Noto KR / JP / SC. Ele resolve escolhas silenciosas por seleção automática implícita e escolhas explícitas por prefer ou strict. Chamadores não enviam uma fonte CJK, não registram recursos Noto em um app .NET nem ajustam substituição por alvo de implantação. Eles enviam dados; o gerador possui o ambiente de fontes, igual em todas as regiões.

A comparação de código de barras segue a mesma lógica. A documentação de códigos de barras do QuestPDF mostra uma abordagem sólida usando ZXing.Net renderizado como SVG vetorial, e observa explicitamente que ZXing.Net não está incluído no pacote QuestPDF: você instala pelo NuGet e conecta:

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

Com gPdf, geração de código de barras é um elemento de esquema de primeira classe. A requisição declara formato, conteúdo, tamanho físico e uma linha legível opcional; formatos GS1 são nativos, então os identificadores de aplicação entram direto em 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" }
}

Para um único app .NET, instalar ZXing.Net e testar a saída pode ser fácil. Para muitos serviços e modelos, especialmente cargas de logística e varejo que precisam de GS1-128, SSCC, GTIN, GS1 DataMatrix ou GS1 QR com linha de interpretação legível, levar o comportamento de código de barras para a API documental é mais simples de manter do que reimplementar o mesmo cabeamento ZXing em cada serviço.

Onde QuestPDF vence claramente

Além de rodar offline, manter dados do documento dentro do seu perímetro e quando o código PDF em si é parte do produto, isto é, quando uma equipe precisa inspecionar, estender ou possuir o caminho de geração, QuestPDF mantém duas áreas de capacidade claramente fora do escopo do gPdf:

  • Operações em PDFs existentes. QuestPDF pode carregar arquivos existentes e mesclá-los, selecionar / reordenar / inverter / filtrar páginas, aplicar sobreposições, adicionar anexos, definir metadados XMP, linearizar para entrega web e tanto criptografar quanto descriptografar com segurança 40/128/256-bit. gPdf pode proteger por senha e controlar permissões dos PDFs que gera, mas não abre, mescla ou descriptografa arquivos que não criou.
  • Gráficos, mapas e gráficos personalizados. QuestPDF integra bibliotecas de gráficos (ScottPlot, LiveCharts, Microcharts), incorpora mapas Mapbox e expõe um Canvas SkiaSharp para desenho 2D arbitrário. gPdf pode desenhar arte vetorial com o elemento path (SVG path data) ou incorporar um gráfico SVG / PNG produzido antes, mas não tem motor de gráficos, mapas ou Canvas integrados; se visualização de dados é central, essa ferramenta vive melhor com QuestPDF.

Onde gPdf vence claramente

gPdf vence quando uma organização não quer que cada equipe de produto seja dona do próprio serviço PDF: pilhas poliglotas, fluxos globais e sistemas ERP / OMS / WMS / e-commerce / fintech / bilheteria gerando documentos a partir de dados estruturados, com modelos que mudam independentemente do código. Nesses ambientes, uma biblioteca local costuma começar barata e virar uma frota: um serviço por linguagem, um caminho de implantação por região, um plano de fontes por contêiner, um conjunto de regressões de código de barras por equipe. gPdf transforma essa frota em um contrato HTTP.

Arquitetura sem servidor deixa a fronteira mais clara. Em AWS Lambda, Cloud Run ou Azure Functions, QuestPDF ainda roda dentro da aplicação: sua equipe empacota o ambiente .NET, fontes, dependências nativas e CPU / memória suficientes para o pico de trabalho PDF, além de assumir partidas a frio. gPdf já é o serviço de geração: a função faz POST de uma pequena requisição template_id + data para o edge e recebe os bytes PDF de volta, sem gerador para aquecer ou processo regional para escalar.

Formato da migração

A migração de QuestPDF para gPdf não é uma reescrita linha por linha. É uma mudança de fronteira: o código C# que constrói o PDF vira uma requisição JSON de documento ou um modelo publicado.

Before / after — a chamada C# de construção do documento vira um único HTTP POST (clique para expandir)
- // 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();

Depois que essa fronteira muda, alterações de diagramação podem virar revisões de modelo em vez de implantações de aplicação. A aplicação ainda possui dados de negócio e decisões de fluxo; gPdf possui a geração.

Nota de preço e fontes

As informações sobre QuestPDF nesta página foram verificadas em 2026-06-02 contra fontes oficiais do QuestPDF: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management e ZUGFeRD example. Páginas de preço e recursos podem mudar; equipes de compras devem conferir novamente a página do fornecedor antes de decidir. QuestPDF e marcas relacionadas pertencem aos respectivos proprietários, e esta comparação não é endossada por eles.

Cenários relacionados de geração de PDF

Se você compara QuestPDF e gPdf, avalie também quando uma API de JSON para PDF, uma API de PDF de fatura, uma API de etiquetas de envio, códigos de barras GS1-128, PDF/A ou Factur-X/ZUGFeRD devem virar uma capacidade compartilhada em vez de uma biblioteca operada dentro de cada aplicação.

FAQ

gPdf substitui QuestPDF?

Não. gPdf substitui a necessidade de operar um serviço de geração PDF para documentos de negócio estruturados. QuestPDF continua sendo uma biblioteca C# local forte quando o PDF deve ser gerado dentro da aplicação.

QuestPDF é gratuito?

A página pública de licenciamento do QuestPDF diz que o nível Community é gratuito sob termos MIT para indivíduos elegíveis, projetos open source, organizações sem fins lucrativos e empresas abaixo de 1 milhão de USD em receita bruta anual. Empresas acima desse limite precisam de uma licença comercial perpétua: Professional por 999 USD mais impostos locais para até 10 desenvolvedores, ou Enterprise por 2.999 USD mais impostos locais para toda a organização, cada uma incluindo um ano de atualizações.

gPdf consegue gerar gráficos ou mapas como o QuestPDF?

Não como motor embutido. QuestPDF integra bibliotecas de gráficos (ScottPlot, LiveCharts, Microcharts), mapas Mapbox e um Canvas SkiaSharp que renderizam dentro do documento. gPdf ainda pode desenhar gráficos vetoriais com o elemento path (que aceita SVG path data) e formas, ou incorporar um SVG / PNG produzido por qualquer biblioteca de gráficos como image. A diferença é que QuestPDF calcula e gera o gráfico dentro do processo, enquanto com gPdf você produz a arte do gráfico e gPdf a posiciona. Se visualização de dados ou mapas são centrais para o documento, QuestPDF é a melhor opção.

Qual produto é mais barato?

Depende da fronteira. QuestPDF pode ser mais barato para equipes .NET elegíveis aos termos Community ou que já operam a infraestrutura de renderização. gPdf pode ser mais barato quando a alternativa é construir, hospedar e manter um serviço PDF entre produtos ou regiões.

gPdf armazena ou registra os dados do meu documento?

Não. O JSON que você envia e o PDF que gPdf retorna não são armazenados. Cada requisição gera dentro de um único isolate V8 do Cloudflare Workers, mantida em memória apenas durante a geração, cerca de 4 ms tipicamente, e liberada quando o fluxo de resposta termina; gPdf não retém, registra, amostra nem treina com conteúdo DocumentRequest. Logs operacionais guardam apenas status HTTP e duração por 30 dias e não contêm corpos de requisição. Veja a política de segurança, política de privacidade e DPA. Para cargas que não podem transmitir dados de forma alguma, implantação local / privada mantém tudo dentro do seu perímetro.

QuestPDF pode rodar sem acesso à internet?

Sim. A página de configuração de licença do QuestPDF diz que não há chave de licença nem servidor de ativação, e que os cálculos são executados localmente. É uma das razões mais claras para escolher QuestPDF.

gPdf consegue gerar diagramações C# arbitrárias do QuestPDF?

Não. gPdf não executa código de diagramação C#. Uma migração significa converter o formato do documento em uma requisição JSON do gPdf ou em um modelo salvo no gPdf.