Geração de QR Codes no Node.js: bibliotecas qrcode e qr-image
\n\nOs 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.
1. Biblioteca qrcode — gerador universal
\n\nqrcode é 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\nInstalação
\nnpm install qrcode\n\nExemplo básico: criando uma imagem PNG
\nconst 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\nGeração de SVG (formato vetorial)
\nconst 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\nGeração em buffer (para envio via HTTP)
\nconst 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\n2. Biblioteca qr-image — alternativa leve
\n\nqr-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.
Instalação
\nnpm install qr-image\n\nExemplo: criando uma imagem PNG
\nconst 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\nGeração de SVG
\nconst 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\nObtendo string SVG sem salvar em arquivo
\nconst 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\n3. 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.
Também na biblioteca
Trabalho com imagens em PHP: guia completo sobre GD e Imagick
Geração de PDF em Swift (iOS/macOS): UIGraphicsPDFRenderer, PDFKit e Core Graphics
Cliente HTTP para C++: as melhores bibliotecas para trabalhar com rede