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 qrcodeApó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 emoptions.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.
Também na biblioteca
Trabalhando com imagens em C# (.NET): guia completo
Trabalhando com CSV em C# (.NET): bibliotecas e exemplos de código
WebSocket em Node.js: biblioteca ws para tempo real
Trabalhando com Markdown em Kotlin: bibliotecas, parsing e geração
Guia completo do Twilio para JavaScript (Node.js) com exemplos