Gerador de QR Codes em JavaScript (Node.js) com qrcode e qr-image

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de QR Codes no Node.js: bibliotecas qrcode e qr-image

\n\n

Os QR Codes se tornaram parte essencial das aplicações web modernas: desde links para sites e autenticação até transmissão de dados de contato e informações de pagamento. No ecossistema Node.js, existem várias bibliotecas maduras que permitem gerar QR Codes sem APIs de terceiros ou editores gráficos pesados. Neste artigo, vamos analisar detalhadamente as duas mais populares: qrcode e qr-image. Você aprenderá como instalar cada uma, quais formatos de saída elas suportam e obterá exemplos de código prontos para integrar em seu projeto.

\n\n

1. Biblioteca qrcode — gerador universal

\n\n

qrcode é uma biblioteca poderosa com suporte a JavaScript, TypeScript e até navegadores. Ela permite gerar QR Codes nos formatos PNG, SVG, canvas e até mesmo como texto simples. A principal vantagem é a configuração detalhada: você pode alterar cores, nível de correção de erros, adicionar logotipos e gerenciar margens.

\n\n

Instalação

\n
npm install qrcode
\n\n

Exemplo básico: criando uma imagem PNG

\n
const QRCode = require('qrcode');\n\n// String simples para codificar\nconst data = 'https://pythonlib.ru';\n\nQRCode.toFile('qrcode.png', data, {\n  color: {\n    dark: '#000000',   // cor dos módulos (quadrados)\n    light: '#FFFFFF'   // cor do fundo\n  },\n  errorCorrectionLevel: 'H' // correção máxima de erros\n}, function (err) {\n  if (err) throw err;\n  console.log('QR Code salvo como qrcode.png');\n});
\n\n

Geração de SVG (formato vetorial)

\n
const QRCode = require('qrcode');\n\nQRCode.toString('https://pythonlib.ru', {\n  type: 'svg',\n  color: {\n    dark: '#2c3e50',\n    light: '#ecf0f1'\n  }\n}, function (err, svgString) {\n  if (err) throw err;\n  console.log(svgString); // exibe a marcação SVG no console\n});
\n\n

Geração em buffer (para envio via HTTP)

\n
const QRCode = require('qrcode');\n\nQRCode.toBuffer('https://pythonlib.ru', {\n  type: 'png',\n  width: 400,\n  margin: 2\n}, function (err, buffer) {\n  if (err) throw err;\n  // buffer é um objeto Buffer que pode ser enviado como resposta HTTP\n  // res.setHeader('Content-Type', 'image/png');\n  // res.send(buffer);\n});
\n\n

2. Biblioteca qr-image — alternativa leve

\n\n

qr-image é uma biblioteca minimalista sem dependências desnecessárias. Ela é voltada para geração rápida de PNG, SVG, EPS e até PDF (através da instalação de um módulo adicional). Se você não precisa de configurações complexas de cores e logotipos, qr-image será uma excelente escolha.

\n\n

Instalação

\n
npm install qr-image
\n\n

Exemplo: criando uma imagem PNG

\n
const qr = require('qr-image');\nconst fs = require('fs');\n\nconst data = 'https://pythonlib.ru';\nconst qr_png = qr.image(data, { type: 'png', size: 10 });\nqr_png.pipe(fs.createWriteStream('qr-image.png'));\n\nconsole.log('QR Code salvo como qr-image.png');
\n\n

Geração de SVG

\n
const qr = require('qr-image');\nconst fs = require('fs');\n\nconst data = 'https://pythonlib.ru';\nconst qr_svg = qr.image(data, { type: 'svg', size: 10 });\nqr_svg.pipe(fs.createWriteStream('qr-image.svg'));\n\nconsole.log('QR Code salvo como qr-image.svg');
\n\n

Obtendo string SVG sem salvar em arquivo

\n
const qr = require('qr-image');\n\nconst data = 'https://pythonlib.ru';\nconst svgString = qr.imageSync(data, { type: 'svg' });\nconsole.log(svgString); // marcação SVG pronta
\n\n

3. Comparação das bibliotecas

\n\n
    \n
  • qrcode — mais configurações (cor, margens, correção de erros, logotipo), suporte a TypeScript, promises e async/await. É mais adequada para projetos em produção onde são necessárias cores personalizadas e alta confiabilidade.

Recommendations