Comparações

gPdf vs jsPDF: PDF no navegador ou API no edge

Comparação direta: jsPDF é popular para PDF rápidos no navegador, mas fontes CJK, códigos de barras, memória em dispositivos móveis e conformidade mudam a arquitetura.

Resumo

jsPDF é uma escolha prática para PDF leves gerados no navegador, protótipos, recibos e exportações offline. A contrapartida aparece quando documentos de produção precisam de texto CJK, códigos de barras prontos para leitura, estabilidade em dispositivos móveis ou saídas de conformidade. gPdf move fontes, códigos de barras, diagramação e geração PDF para uma API controlada no edge: o navegador envia dados e recebe um PDF finalizado.

Lado a lado

Critério gPdf jsPDF Vantagem
Onde a geração roda
O valor do jsPDF é rodar no cliente; essa mesma propriedade transfere CPU e memória para cada dispositivo do usuário.
Isolates V8 do Cloudflare Workers no edge A aba do navegador do usuário gPdf
Tratamento de fontes CJK
As fontes PDF padrão do jsPDF não cobrem texto UTF-8/CJK; equipes precisam carregar ou empacotar dados TTF adequados.
Substituição de fontes integrada para chinês simplificado, japonês e coreano Exige uma fonte personalizada com os glifos necessários gPdf
Carga da interface para CJK Nenhum arquivo de fonte CJK no pacote da aplicação web Frequentemente arquivos de fonte de vários MB ou módulos Base64 gerados gPdf
Modelo de geração de código de barras Elemento `barcode` nativo para formatos 1D e 2D Normalmente combinado com biblioteca de códigos de barras separada, SVG/Canvas ou cadeia de imagens gPdf
Precisão de impressão do código de barras
Em etiquetas de envio, etiquetas de armazém e ingressos, leitores se importam com geometria impressa, zonas silenciosas e tamanho de módulo, não só aparência na tela.
Barras e módulos vetoriais dentro do PDF Depende de como o código de barras do navegador é convertido e escalado para o PDF gPdf
Estabilidade em navegador móvel O trabalho de geração sai da aba Geração PDF, fontes, imagens e códigos de barras consomem memória do cliente gPdf
Suporte offline Exige acesso de rede à API Pode funcionar totalmente offline em uma PWA ou app local jsPDF
PDF/A e fatura eletrônica Perfis PDF/A e endpoint Factur-X/ZUGFeRD Não é o encaixe normal para arquivamento ou pacotes híbridos de fatura eletrônica gPdf
Preço de lista Plano Basic de 5 USD/mês inclui 100.000 páginas; excedente começa em 0,00005 USD por página Biblioteca open source; sem conta de fornecedor pela biblioteca em si jsPDF
Custo de propriedade em produção A API assume fontes, geração de códigos de barras, ambiente de saída e atualizações Sua aplicação web assume empacotamento de fontes, conversão de códigos de barras, memória em dispositivos móveis e QA de navegador gPdf
Melhor caso de uso padrão Documentos estruturados de produção: etiquetas, faturas, recibos, ingressos e extratos Pequenas exportações no navegador, protótipos, documentos offline e PDF simples com texto latino Empate

Quando escolher cada um

Escolha gPdf quando
  • Seus documentos incluem texto em chinês, japonês ou coreano e você não quer enviar grandes arquivos de fonte para cada navegador.
  • Você gera etiquetas ou ingressos críticos para leitura com Code 128, GS1-128, QR, DataMatrix, PDF417 ou outros códigos de barras.
  • Seus usuários usam muitos navegadores móveis e a geração PDF não deve disputar memória com a página.
  • Você precisa de PDF/A, Factur-X, ZUGFeRD ou um único gerador controlado para saídas sensíveis a auditoria.
  • O mesmo fluxo PDF precisa ser chamado por interface, servidor, tarefas e integrações.
Escolha jsPDF quando
  • Você precisa de exportação 100% offline no navegador ou PWA, sem chamada de servidor.
  • O PDF é pequeno, apenas em texto latino e gerado ocasionalmente por um usuário.
  • Você está prototipando e quer a forma mais rápida de desenhar texto, linhas e imagens em JavaScript.
  • Os dados nunca podem sair do dispositivo do usuário, nem mesmo para uma requisição curta de geração.
  • Você aceita possuir empacotamento de fontes, codificação de códigos de barras, escala e casos-limite de memória do navegador.
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

jsPDF é excelente para exportações leves no navegador

jsPDF é popular porque resolve um problema real de produto: criar um PDF dentro do navegador sem operar um serviço no servidor. Um desenvolvedor pode desenhar texto, linhas, imagens e tabelas simples, depois disparar o download na mesma página. Para protótipos, pequenas telas administrativas, recibos locais e PWAs offline, é um bom encaixe.

A pergunta de produto é onde essa fronteira do navegador deixa de ser a correta. Quando o PDF vira documento de negócio que clientes escaneiam, arquivam, enviam por e-mail ou submetem a outro sistema, o trabalho deixa de ser apenas “desenhar um arquivo”. Passa a envolver gestão de fontes, precisão de códigos de barras, estabilidade em dispositivos móveis, saída determinística e, às vezes, PDF/A ou empacotamento de fatura eletrônica.

Mesmo PDF final, fronteira de produto diferente

Com jsPDF, sua aplicação de interface é o gerador. Cada aba do navegador precisa manter a biblioteca, quaisquer fontes personalizadas, imagens intermediárias, saída de códigos de barras e bytes finais do PDF. A conta da biblioteca fica em zero, mas a responsabilidade de produção passa para cada dispositivo do usuário.

Com gPdf, o navegador ou servidor envia uma requisição estruturada DocumentRequest ou template_id + data. gPdf possui o ambiente de geração, as fontes integradas, a geometria de códigos de barras e a geração binária do PDF no edge. A aplicação continua responsável pelos dados e pela lógica de modelo, não pelo motor PDF.

Encaixe de produto: exportação offline vs documentos operacionais

Escolha jsPDF quando o PDF é uma conveniência local: um pequeno botão de exportação, um recibo simples apenas em alfabeto latino, um snapshot de painel ou uma PWA que precisa continuar funcionando sem rede.

Escolha gPdf quando o PDF faz parte de um fluxo operacional: etiquetas de envio, etiquetas de armazém, faturas, ingressos, extratos, formulários alfandegários e recibos cross-border. Esses documentos precisam da mesma saída em todos os dispositivos, não do que a aba atual do navegador consegue montar com segurança.

Modelo de custo: biblioteca grátis vs superfície produtiva própria

A biblioteca jsPDF tem a vantagem de preço óbvia: ela é open source, e CPU de navegador não aparece como linha na conta de nuvem. Para uma pequena funcionalidade interna, esse pode ser o caminho mais barato.

O custo de produção aparece no trabalho ao redor da biblioteca:

  • Arquivos de fonte compatíveis com CJK ou módulos Base64 gerados.
  • Bibliotecas de codificação e conversão de códigos de barras.
  • Bugs de memória e download específicos de navegador.
  • QA de impressão para leitores e impressoras térmicas.
  • Testes de regressão em computadores, iOS Safari, Android WebView e navegadores embarcados.

gPdf transforma isso em uma conta de uso. O plano Basic público começa em 5 USD/mês para 100.000 páginas, com excedente padrão a partir de 0,00005 USD por página. É custo de fornecedor, mas remove a necessidade de fazer cada pacote de interface e cada dispositivo do usuário se comportarem como um serviço PDF de produção.

O custo CJK não é só tamanho de arquivo

A primeira fronteira dura é texto CJK: chinês, japonês e coreano.

As fontes PDF padrão integradas ao jsPDF são úteis para saída latina simples, mas não cobrem todos os glifos Unicode. Quando o documento contém texto CJK, a aplicação precisa de uma fonte que realmente contenha esses glifos. Na prática, implementações no navegador frequentemente empacotam um arquivo TTF, convertem a fonte em um módulo JavaScript Base64 ou buscam dados de fonte antes de gerar o PDF.

Esse custo é pago duas vezes: primeiro como carga maior da interface, depois como memória do navegador durante a geração. Em dispositivos móveis, a mesma aba pode manter a aplicação web, a fonte, buffers de códigos de barras, imagens e bytes finais do PDF ao mesmo tempo.

gPdf mantém esse trabalho no servidor. O navegador envia JSON estruturado; o gerador escolhe entre fontes integradas que cobrem latino, grego, cirílico, CJK, árabe, devanágari, bengali, tailandês e monoespaçado. Uma carga de pedido de 2 KB não precisa virar um caminho de entrega de fonte de 12 MB.

Custo de códigos de barras: codificar é fácil, imprimir com confiança é mais difícil

Em logística, e-commerce, manufatura, saúde, bilheteria e varejo, o código de barras pode importar mais que o texto visível. Um humano lê o número do pedido; a operação lê Code 128, GS1-128, QR, DataMatrix ou PDF417.

Com jsPDF, a geração de códigos de barras costuma ser uma decisão de produto separada. Equipes combinam jsPDF com outro codificador, geram o código em SVG, Canvas ou imagem, e então colocam esse resultado no PDF. Isso funciona para um QR de cupom ou uma prova de conceito.

Fica frágil quando o código impresso é operacionalmente crítico:

  • Um código de barras em Canvas pode ser rasterizado na resolução errada.
  • Uma imagem escalada pode desfocar barras, módulos ou zonas silenciosas.
  • Um navegador, transformação CSS ou caminho de exportação pode mudar o tamanho físico final.
  • Formatos diferentes podem exigir bibliotecas ou caminhos de conversão diferentes.
  • Impressoras térmicas a 203 DPI expõem rapidamente pequenos erros de tamanho.

gPdf trata códigos de barras como elementos de documento. A requisição declara type: "barcode", format, conteúdo e tamanho físico em milímetros. O gerador emite a geometria vetorial do código de barras dentro do PDF para formatos 1D e 2D suportados, de modo que texto, formas, tabelas, imagens e códigos de barras permaneçam no mesmo sistema de coordenadas.

Studio e iteração de modelos

jsPDF é centrado em código. Uma mudança de diagramação geralmente significa editar comandos de desenho, posições, registro de fonte, conversão de imagem e posicionamento de código de barras em JavaScript.

gPdf mantém um fluxo centrado em API, mas adiciona gPdf Studio como editor visual gratuito para a diagramação do PDF. Equipes podem adicionar e arrastar textos, imagens, tabelas, formas, cabeçalhos, rodapés e códigos de barras, depois conectar a concepção à geração por template_id + data. Isso importa quando um formato de etiqueta, fatura ou recibo muda com frequência e pessoas não especialistas em PDF precisam participar da diagramação.

Geração PDF no cliente parece barata porque a conta do servidor é zero. O custo vai para o dispositivo do usuário.

Em computadores, isso pode ser aceitável. Em navegadores móveis, um documento de produção pode pressionar muito a aba: dados de fonte CJK, imagens Base64, buffers de Canvas, imagens de códigos de barras, bytes PDF gerados e a aplicação em execução competem por memória ao mesmo tempo. iOS Safari e dispositivos Android com pouca memória perdoam menos que o laptop de um desenvolvedor.

Mover a geração para gPdf muda o formato do problema. O navegador monta uma pequena requisição JSON, aguarda uma resposta binária e baixa o PDF finalizado. A aba do usuário deixa de ser gerente de fontes, gerador de códigos de barras, motor de diagramação e escritor binário de PDF.

Quando jsPDF ainda é a escolha certa

Existem bons motivos para manter jsPDF.

Se o usuário precisa exportar offline, jsPDF é o melhor encaixe. Se os dados não podem sair do dispositivo de forma alguma, a geração no navegador é a fronteira de privacidade mais limpa. Se o documento é pequeno, apenas latino e ocasional, o custo operacional de introduzir uma API pode não valer a pena. Para protótipos e ferramentas internas, jsPDF muitas vezes é exatamente o caminho mais rápido.

A decisão muda quando a saída faz parte de um fluxo operacional: uma etiqueta de envio que precisa escanear, uma fatura que precisa ser arquivada, um ingresso que precisa ser validado ou um documento cross-border que precisa renderizar nomes CJK corretamente. Nesse ponto, “gerar PDF no navegador” importa menos que “gerar o mesmo PDF de produção com confiabilidade”.

Formato da migração

A migração não é “trocar uma chamada de função”. É sair do desenho imperativo no navegador para uma requisição estruturada de documento.

- // Before: browser-side drawing with jsPDF plus extra font/barcode setup.
- import { jsPDF } from "jspdf";
- import JsBarcode from "jsbarcode";
-
- const doc = new jsPDF({ unit: "mm", format: [100, 150] });
- // Load a CJK-capable TTF and register it before drawing CJK text.
- doc.addFileToVFS("NotoSansCJK-Regular.ttf", base64Font);
- doc.addFont("NotoSansCJK-Regular.ttf", "NotoSansCJK", "normal");
- doc.setFont("NotoSansCJK");
- doc.text("跨境订单 / Cross-border order", 6, 10);
-
- // Generate a barcode separately, then place it into the PDF.
- JsBarcode(canvas, "PDN0003507278", { format: "CODE128" });
- doc.addImage(canvas.toDataURL("image/png"), "PNG", 6, 72, 72, 20);
- doc.save("label.pdf");
+
+ // After: send one structured DocumentRequest to gPdf.
+ const res = await fetch("https://api.gpdf.com/api/v1/pdf/render", {
+   method: "POST",
+   headers: {
+     Authorization: `Bearer ${KEY}`,
+     "Content-Type": "application/json"
+   },
+   body: JSON.stringify({
+     settings: {
+       defaults: {
+         text: {
+           font_family: "NotoSans-Regular",
+           font_mode: "prefer",
+           font_size: 9,
+           color: "#111827"
+         }
+       }
+     },
+     pages: [{
+       width: 100,
+       height: 150,
+       elements: [
+         {
+           type: "text",
+           x: 6,
+           y: 8,
+           content: "跨境订单 / Cross-border order",
+           style: { width: 88, font_size: 12, font_weight: "bold" }
+         },
+         {
+           type: "barcode",
+           x: 6,
+           y: 70,
+           width: 72,
+           height: 18,
+           format: "code128",
+           content: "PDN0003507278",
+           barcode_text: { enabled: true, position: "bottom", offset: 1 }
+         },
+         {
+           type: "barcode",
+           x: 80,
+           y: 8,
+           width: 14,
+           height: 14,
+           format: "qrcode",
+           content: "https://track.example/PDN0003507278",
+           barcode_text: { enabled: false, position: "bottom" }
+         }
+       ]
+     }]
+   })
+ });
+ const pdf = await res.arrayBuffer();

A mudança importante é propriedade. Com jsPDF, sua aplicação web possui o caminho de fontes CJK, o caminho de geração de códigos de barras, o perfil de memória do navegador e o comportamento de exportação. Com gPdf, a aplicação possui os dados e o modelo; o gerador no edge possui a mecânica do documento.

Cenários relacionados de geração de PDF

Equipes que comparam jsPDF e gPdf começam normalmente decidindo se a geração PDF deve permanecer no navegador ou passar para uma API controlada. Para documentos estruturados, as páginas naturais são API de JSON para PDF, API de PDF de fatura, API de etiquetas de envio, API de códigos de barras GS1 e API de modelos PDF. Se arquivamento ou fatura eletrônica importam, leia também API PDF/A e API Factur-X.

FAQ

jsPDF é gratuito?

A biblioteca em si é open source. O custo de produção está no trabalho ao redor: fontes CJK, bibliotecas de códigos de barras, QA de navegador, QA de impressão e compatibilidade com dispositivos com pouca memória.

gPdf substitui todos os casos de uso do jsPDF?

Não. Exportação offline no navegador e documentos estritamente locais ainda são território natural do jsPDF. gPdf é para documentos de produção em que um gerador controlado vale a chamada de API.

Por que mencionar custo de código de barras separadamente?

Porque um código de barras que parece correto na tela ainda pode falhar após escala, rasterização ou impressão térmica. Documentos operacionais precisam de confiabilidade no leitor, não só de um padrão visível.

Veja também