Geração de QR Codes em Node.js: biblioteca qrcode e exemplos

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 em Node.js com a biblioteca qrcode



Os QR codes se tornaram parte essencial da web moderna: desde links para Wi-Fi até confirmação de pagamentos. Se você está desenvolvendo um backend em Node.js e deseja criar QR codes programaticamente, a biblioteca qrcode é a ferramenta mais popular e simples. Ela não requer a instalação de pacotes gráficos adicionais e consegue gerar resultados em diferentes formatos: PNG, SVG, canvas HTML e até mesmo em formato textual para o terminal.



Instalação

Instale o pacote via npm:

npm install qrcode


Após a instalação, importe o módulo no seu projeto:

const QRCode = require('qrcode');


Métodos principais

A biblioteca oferece três métodos principais para geração:

  • QRCode.toDataURL(text, options) — retorna uma Data URL (string base64 com imagem PNG).
  • QRCode.toBuffer(text, options) — retorna um Buffer com imagem PNG (útil para salvar em arquivo ou enviar via HTTP).
  • QRCode.toString(text, options) — retorna uma string no formato SVG ou caracteres de terminal (o tipo de saída é definido em options.type).
  • QRCode.toCanvas(canvasElement, text, options) — para ambiente de navegador (canvas).


Exemplo simples: criando um QR code em PNG (buffer)

O cenário mais comum é gerar uma imagem e salvá-la em um arquivo ou disponibilizá-la ao usuário. Veja como fazer:

const QRCode = require('qrcode');const fs = require('fs');

QRCode.toBuffer('https://pythonlib.ru', { width: 400, margin: 2, color: { dark: '#000000', light: '#ffffff' }}).then(buffer => { fs.writeFileSync('qrcode.png', buffer); console.log('QR code salvo em qrcode.png');}).catch(err => console.error(err));


Neste exemplo, definimos o tamanho de 400 pixels, margem de 2 módulos e esquema de cores preto e branco. O método toBuffer retorna uma Promise, então usamos .then() ou async/await.



Geração de QR code em SVG

Para aplicações web, muitas vezes é mais conveniente usar o formato vetorial SVG — ele escala sem perda de qualidade e ocupa menos espaço. Especifique type: 'svg' nas opções:

const QRCode = require('qrcode');

QRCode.toString('https://pythonlib.ru', { type: 'svg', width: 300, color: { dark: '#1a73e8', light: '#ffffff' }}).then(svgString => { console.log(svgString); // Agora você pode salvar svgString em um arquivo ou inserir em HTML}).catch(err => console.error(err));


Exibindo o QR code diretamente no terminal

Às vezes é necessário verificar rapidamente um link sem abrir o navegador. A biblioteca consegue desenhar o QR code com caracteres Unicode no console:

const QRCode = require('qrcode');

QRCode.toString('Olá, PythonLib!', { type: 'terminal', small: true}).then(qr => { console.log(qr);}).catch(err => console.error(err));


O parâmetro small: true torna o QR code mais compacto (usa meios-blocos). Se removido, a imagem será maior, porém mais detalhada.



Configurações e parâmetros

O objeto options permite controlar a geração de forma flexível. Os principais campos são:

  • width — largura da imagem em pixels (padrão 256).
  • margin — margem da borda (em módulos do QR code, padrão 4).
  • color.dark — cor dos módulos escuros (hex, rgb ou nome da cor).
  • color.light — cor de fundo (padrão branco).
  • errorCorrectionLevel — nível de correção de erros: 'L' (7%), 'M' (15%), 'Q' (25%), 'H' (30%). Quanto maior o nível, mais dados podem ser recuperados, mas o QR code se torna mais denso.

Recommendations