{"_id":"@cristianomzn/brasoes-e-bandeiras-do-brasil","_rev":"3-b4668ea4c800677403fb1a7a94f985d0","name":"@cristianomzn/brasoes-e-bandeiras-do-brasil","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@cristianomzn/brasoes-e-bandeiras-do-brasil","version":"1.0.0","keywords":["brasao","brasoes","bandeiras","municipios","brasil","ibge","danfse"],"author":{"name":"Cristiano Mozena"},"license":"MIT","_id":"@cristianomzn/brasoes-e-bandeiras-do-brasil@1.0.0","maintainers":[{"name":"cristianomzn","email":"past.kun@gmail.com"}],"homepage":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil#readme","bugs":{"url":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil/issues"},"dist":{"shasum":"4bb626bfc4b072dc54ed32b80ff2a085c7782f9f","tarball":"https://registry.npmjs.org/@cristianomzn/brasoes-e-bandeiras-do-brasil/-/brasoes-e-bandeiras-do-brasil-1.0.0.tgz","fileCount":3273,"integrity":"sha512-5G9M+79H6h3V6oig6Gv+xHgbfv6O4GESEWlOAyWvsbpYVF1z8TyOucTM2FcMUBqWmNI6aIly9xCazsCpNWbGgQ==","signatures":[{"sig":"MEQCIE89GtAPsTEzfVR4ZmcZo0gqLkTy8MmZAs9lFgy/BLSEAiB9RMmnSaoQAh6XvoiUczflcPBwl+ITI53jw8hEWB3MaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64386841},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"eed3ba17abe741084c9303d0f6a4231855e84b55","scripts":{"test":"node --input-type=module -e \"import { Bbb } from './index.js'; console.log(Bbb.get('SP', '3550308'));\""},"_npmUser":{"name":"cristianomzn","email":"past.kun@gmail.com"},"repository":{"url":"git+https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil.git","type":"git"},"_npmVersion":"11.12.1","description":"Arquivo de imagens de brasões de armas municipais brasileiros para uso em DANFSE e outros fins.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/brasoes-e-bandeiras-do-brasil_1.0.0_1781627440789_0.48748192225719156","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cristianomzn/brasoes-e-bandeiras-do-brasil","version":"1.0.1","keywords":["brasao","brasoes","bandeiras","municipios","brasil","ibge","danfse"],"author":{"name":"Cristiano Mozena"},"license":"MIT","_id":"@cristianomzn/brasoes-e-bandeiras-do-brasil@1.0.1","maintainers":[{"name":"cristianomzn","email":"past.kun@gmail.com"}],"homepage":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil#readme","bugs":{"url":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil/issues"},"dist":{"shasum":"ca12d4a5e630b605b739a376279652ebf5ad1598","tarball":"https://registry.npmjs.org/@cristianomzn/brasoes-e-bandeiras-do-brasil/-/brasoes-e-bandeiras-do-brasil-1.0.1.tgz","fileCount":3273,"integrity":"sha512-V6bak6OkQuC2UwT339v6x4B3uGRsgDiXexyixiR75ObhaY8ec3gLqWEUjBdiidTIjXU1hwxuHRIbElpQzdLR/g==","signatures":[{"sig":"MEQCIGOVt+HBCj9pRhoMlH3oo8yM6JEDap36VOELhJZGhugmAiBjc1CHzPGgxfwtN/S+JkIElJ45SxkJj0lKP0UINDr9lQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64393196},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"e826695aab0a755a41433349b619e7c1fd659855","scripts":{"test":"node --input-type=module -e \"import { Bbb } from './index.js'; console.log(Bbb.get('SP', '3550308'));\""},"_npmUser":{"name":"cristianomzn","email":"past.kun@gmail.com"},"repository":{"url":"git+https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil.git","type":"git"},"_npmVersion":"11.12.1","description":"Arquivo de imagens de brasões de armas municipais brasileiros para uso em DANFSE e outros fins.","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/brasoes-e-bandeiras-do-brasil_1.0.1_1781631849106_0.022881153555247558","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cristianomzn/brasoes-e-bandeiras-do-brasil","version":"1.0.2","description":"Arquivo de imagens de brasões de armas municipais brasileiros para uso em DANFSE e outros fins.","type":"module","main":"index.js","exports":{".":"./index.js"},"scripts":{"test":"node --input-type=module -e \"import { Bbb } from './index.js'; console.log(Bbb.get('SP', '3550308'));\""},"keywords":["brasao","brasoes","bandeiras","municipios","brasil","ibge","danfse"],"author":{"name":"Cristiano Mozena"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil.git"},"gitHead":"a8cc7177dc14b531f3823de241cf40048467bcbb","_id":"@cristianomzn/brasoes-e-bandeiras-do-brasil@1.0.2","bugs":{"url":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil/issues"},"homepage":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil#readme","_nodeVersion":"24.14.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-newPLHoyZhoLRvtcPLjbjRNeeKcDEeqQeN+QET83yirZO/oi3kcNp5+w3oKoVbx0u86k4TktzE3tfXI9JSuV0w==","shasum":"21c93f47eadba141f7176c06a9fd2a49ea928d87","tarball":"https://registry.npmjs.org/@cristianomzn/brasoes-e-bandeiras-do-brasil/-/brasoes-e-bandeiras-do-brasil-1.0.2.tgz","fileCount":3273,"unpackedSize":64393207,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE5wzkVSCQNUDuI1uv0s7/mTbC1dXK/HAMpyaWvX3BZwAiBJavZHBPH2yO36LGCJrLHv9VoQ1DjLx6e5Ts0ivxVtqA=="}]},"_npmUser":{"name":"cristianomzn","email":"past.kun@gmail.com"},"directories":{},"maintainers":[{"name":"cristianomzn","email":"past.kun@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/brasoes-e-bandeiras-do-brasil_1.0.2_1781632289109_0.38450350049774396"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-16T16:30:40.599Z","modified":"2026-06-16T17:51:30.411Z","1.0.0":"2026-06-16T16:30:41.764Z","1.0.1":"2026-06-16T17:44:10.142Z","1.0.2":"2026-06-16T17:51:30.291Z"},"bugs":{"url":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil/issues"},"author":{"name":"Cristiano Mozena"},"license":"MIT","homepage":"https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil#readme","keywords":["brasao","brasoes","bandeiras","municipios","brasil","ibge","danfse"],"repository":{"type":"git","url":"git+https://github.com/cristianomzn/brasoes-e-bandeiras-do-brasil.git"},"description":"Arquivo de imagens de brasões de armas municipais brasileiros para uso em DANFSE e outros fins.","maintainers":[{"name":"cristianomzn","email":"past.kun@gmail.com"}],"readme":"# Brasões e Bandeiras do Brasil\n\n![Visualizações](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=github.com/cristianomzn/brasoes-e-bandeiras-do-brasil&count_bg=%2379C83D&title_bg=%23555555&title=views)\n![npm](https://img.shields.io/npm/v/@cristianomzn/brasoes-e-bandeiras-do-brasil?color=79C83D&logo=npm)\n![Packagist](https://img.shields.io/packagist/v/cristianomzn/brasoes-e-bandeiras-do-brasil?color=79C83D&logo=packagist)\n![License](https://img.shields.io/github/license/cristianomzn/brasoes-e-bandeiras-do-brasil?color=79C83D)\n![Cobertura](https://img.shields.io/badge/cobertura-58.6%25-79C83D?style=flat)\n\nAcervo de imagens dos brasões de armas dos municípios brasileiros, destinado ao uso na DANFSE (Documento Auxiliar Nota fiscal de serviço eletrônica) e em outros documentos que exigem a identificação visual dos municípios.\n\n## Início rápido\n\n### PHP\n\n```bash\ncomposer require cristianomzn/brasoes-e-bandeiras-do-brasil\n```\n\n```php\n<?php\nrequire 'vendor/autoload.php';\n\nuse CristianoMzn\\Bbb\\Bbb;\n\necho Bbb::get('SP', '3550308');\n// /caminho/do/projeto/vendor/cristianomzn/brasoes-e-bandeiras-do-brasil/brasao-de-armas-municipal/SP/3550308.jpg\n```\n\n### Node.js\n\n```bash\nnpm install @cristianomzn/brasoes-e-bandeiras-do-brasil\n```\n\n```js\nimport { Bbb } from '@cristianomzn/brasoes-e-bandeiras-do-brasil';\n\nconsole.log(Bbb.get('SP', '3550308'));\n// /caminho/do/projeto/node_modules/@cristianomzn/brasoes-e-bandeiras-do-brasil/brasao-de-armas-municipal/SP/3550308.jpg\n```\n\n## Requisitos\n\n| Plataforma | Versão mínima |\n|------------|---------------|\n| PHP | 8.0+ |\n| Node.js | 18+ |\n\n## API\n\n### `Bbb.get(uf, ibgeCode)`\n\nRetorna o caminho absoluto para a imagem do brasão de armas de um município brasileiro, ou `false`/`null` se a imagem não existir no acervo.\n\n| Parâmetro | Tipo | Descrição |\n|-----------|------|-----------|\n| `uf` | `string` | Sigla da unidade federativa (ex: `'SP'`, `'RJ'`, `'MG'`) |\n| `ibgeCode` | `string \\| number` | Código IBGE do município com exatamente 7 dígitos (ex: `'3550308'` ou `3550308`) |\n\n**Retorno:** `string | false` (PHP) ou `string | null` (Node.js) —\ncaminho absoluto para o arquivo `.jpg` ou `false`/`null` se a imagem não existir no acervo.\n\n**Exceções (lançadas em caso de erro na lib):**\n\n| Exceção | PHP | Node.js | Motivo |\n|---------|-----|---------|--------|\n| UF inválida | `InvalidArgumentException` | `Error` | Sigla de estado não existe |\n| Código IBGE inválido | `InvalidArgumentException` | `Error` | Não contém exatamente 7 dígitos |\n| Diretório da UF não encontrado | `RuntimeException` | `Error` | Lib instalada incorretamente ou corrompida |\n\n**UFs válidas:** `AC`, `AL`, `AM`, `AP`, `BA`, `CE`, `DF`, `ES`, `GO`, `MA`, `MG`, `MS`, `MT`, `PA`, `PB`, `PE`, `PI`, `PR`, `RJ`, `RN`, `RO`, `RR`, `RS`, `SC`, `SE`, `SP`, `TO`\n\n#### Exemplo: renderização HTML\n\n**PHP:**\n\n```php\n<?php\nrequire 'vendor/autoload.php';\n\nuse CristianoMzn\\Bbb\\Bbb;\n\n$uf = 'SP';\n$codigoIbge = '3550308';\n$brasao = Bbb::get($uf, $codigoIbge);\n\nif ($brasao !== false) {\n    $img = base64_encode(file_get_contents($brasao));\n    $html = \"<img src='data:image/jpeg;base64,{$img}' alt='Brasão de {$uf}'>\";\n} else {\n    $html = \"<span class='placeholder'>Brasão não disponível</span>\";\n}\n\necho $html;\n```\n\n**Node.js:**\n\n```js\nimport { Bbb } from '@cristianomzn/brasoes-e-bandeiras-do-brasil';\nimport { readFileSync } from 'fs';\n\nconst uf = 'SP';\nconst codigoIbge = '3550308';\nconst brasao = Bbb.get(uf, codigoIbge);\n\nlet html;\n\nif (brasao !== null) {\n    const img = readFileSync(brasao);\n    const base64 = img.toString('base64');\n    html = `<img src=\"data:image/jpeg;base64,${base64}\" alt=\"Brasão de ${uf}\">`;\n} else {\n    html = `<span class=\"placeholder\">Brasão não disponível</span>`;\n}\n\nconsole.log(html);\n```\n\n#### Exemplo: geração de PDF\n\n**PHP com TCPDF:**\n\n```php\n<?php\nrequire 'vendor/autoload.php';\nrequire 'vendor/tcpdf/tcpdf.php';\n\nuse CristianoMzn\\Bbb\\Bbb;\n\n$uf = 'SP';\n$codigoIbge = '3550308';\n$brasao = Bbb::get($uf, $codigoIbge);\n\n$pdf = new TCPDF();\n$pdf->AddPage();\n\nif ($brasao !== false) {\n    $pdf->Image($brasao, 10, 10, 30);\n} else {\n    $pdf->Cell(0, 10, 'Brasão não disponível para este município.', 0, 1, 'C');\n}\n\n$pdf->Output('documento.pdf');\n```\n\n**Node.js com PDFKit:**\n\n```js\nimport { Bbb } from '@cristianomzn/brasoes-e-bandeiras-do-brasil';\nimport PDFDocument from 'pdfkit';\nimport { createWriteStream } from 'fs';\n\nconst uf = 'SP';\nconst codigoIbge = '3550308';\nconst brasao = Bbb.get(uf, codigoIbge);\n\nconst doc = new PDFDocument();\ndoc.pipe(createWriteStream('documento.pdf'));\n\nif (brasao !== null) {\n    doc.image(brasao, 10, 10, { width: 30 });\n} else {\n    doc.fontSize(12).text('Brasão não disponível para este município.', 10, 20);\n}\n\ndoc.end();\n```\n\n#### Tratamento de erros\n\nA função lança erro quando:\n- A UF fornecida não é válida\n- O código IBGE não contém exatamente 7 dígitos\n- O diretório da UF não existe (lib corrompida)\n\n**PHP:**\n\n```php\n<?php\nrequire 'vendor/autoload.php';\n\nuse CristianoMzn\\Bbb\\Bbb;\n\ntry {\n    $path = Bbb::get('XX', '1234567');\n} catch (InvalidArgumentException $e) {\n    // UF ou código IBGE com formato inválido\n    echo \"Erro de validação: \" . $e->getMessage();\n} catch (RuntimeException $e) {\n    // Diretório não existe — lib corrompida\n    echo \"Erro de instalação: \" . $e->getMessage();\n}\n```\n\n**Node.js:**\n\n```js\nimport { Bbb } from '@cristianomzn/brasoes-e-bandeiras-do-brasil';\n\ntry {\n    const path = Bbb.get('XX', '1234567');\n} catch (e) {\n    console.error(`Erro: ${e.message}`);\n}\n```\n\n## Estrutura do projeto\n\n```\nbrasao-de-armas-municipal/\n├── AC/\n│   ├── 1200054.jpg\n│   ├── 1200104.jpg\n│   └── ...\n├── AL/\n│   ├── 2700105.jpg\n│   └── ...\n├── GO/\n│   ├── 5200050.jpg\n│   └── ...\n└── ...\n```\n\nAs imagens são organizadas por unidade federativa (UF) e nomeadas pelo código IBGE do município.\n\n## Formato das imagens\n\n| Propriedade | Valor |\n|-------------|-------|\n| Formato | JPEG |\n| Resolução | 192 × 192 px |\n| Fundo | Branco |\n\nAs imagens seguem o layout sugerido para inserção na DANFSE.\n\n## Cobertura atual\n\n### Resumo geral\n\n| Métrica | Valor |\n|---------|-------|\n| Total de imagens | 3.266 |\n| Estados cobertos | 27 |\n| Municípios abrangidos | 3.266 |\n| Total de municípios no Brasil | 5.569 |\n| Cobertura nacional | 58,6% |\n\n### Detalhamento por UF\n\n| UF | Cobertos | Total | Cobertura | |\n|----|----------|-------|-----------|--|\n| RR | 15 | 15 | 100% | █████████████ |\n| RS | 433 | 497 | 87,1% | ███████████░░ |\n| SP | 554 | 645 | 85,9% | ███████████░░ |\n| RJ | 75 | 92 | 81,5% | ██████████░░░ |\n| PB | 180 | 223 | 80,7% | ██████████░░░ |\n| SC | 214 | 295 | 72,5% | █████████░░░░ |\n| MG | 607 | 853 | 71,2% | █████████░░░░ |\n| RO | 34 | 52 | 65,4% | ████████░░░░░ |\n| ES | 51 | 78 | 65,4% | ████████░░░░░ |\n| RN | 106 | 167 | 63,5% | ████████░░░░░ |\n| CE | 100 | 184 | 54,3% | ███████░░░░░░ |\n| AL | 49 | 102 | 48,0% | ██████░░░░░░░ |\n| AC | 10 | 22 | 45,5% | ██████░░░░░░░ |\n| AM | 28 | 62 | 45,2% | ██████░░░░░░░ |\n| SE | 34 | 75 | 45,3% | ██████░░░░░░░ |\n| MS | 35 | 79 | 44,3% | █████░░░░░░░░ |\n| GO | 107 | 246 | 43,5% | █████░░░░░░░░ |\n| MT | 60 | 142 | 42,3% | █████░░░░░░░░ |\n| PA | 60 | 144 | 41,7% | █████░░░░░░░░ |\n| PR | 196 | 399 | 49,1% | ██████░░░░░░░ |\n| BA | 146 | 417 | 35,0% | █████░░░░░░░░ |\n| PE | 58 | 184 | 31,5% | ████░░░░░░░░░ |\n| AP | 5 | 16 | 31,3% | ████░░░░░░░░░ |\n| MA | 45 | 217 | 20,7% | ███░░░░░░░░░░ |\n| TO | 23 | 139 | 16,5% | ██░░░░░░░░░░░ |\n| PI | 40 | 224 | 17,9% | ██░░░░░░░░░░░ |\n| DF - Brasília | 1 | 1 | 100% | █████████████ |\n\n## Como contribuir\n\nContribuições são muito bem-vindas! Os principais tipos de contribuição esperados são:\n\n- Enviar imagens de brasões de municípios ainda ausentes no acervo.\n- Substituir imagens existentes por versões mais legíveis e de maior qualidade.\n\n### Regras obrigatórias\n\n- Formato: **JPEG** (extensão `.jpg`).\n- Resolução: **192 × 192 px** exatos.\n- Proporção de aspecto original **preservada** — imagens com distorção (esticamento ou compressão) serão rejeitadas.\n- Nome do arquivo: código IBGE do município (ex: `1200054.jpg`).\n- A imagem deve ser de domínio público ou licenciada para uso livre.\n- Incluir a fonte da imagem no pull request (ex: Wikipédia, portal da prefeitura).\n\n### Passo a passo\n\n1. Faça um fork do repositório.\n2. Adicione ou substitua a imagem na pasta da UF correspondente.\n3. Abra um pull request com a descrição da alteração e a fonte da imagem.\n\n## Fontes\n\nAs imagens são obtidas de fontes públicas na internet, como:\n\n- [Wikipédia](https://pt.wikipedia.org/)\n- Portais oficiais de prefeituras municipais\n- Outras fontes de domínio público\n\n**Importante:** Somente imagens de domínio público ou licenciadas para uso livre serão aceitas neste projeto.\n\nAo contribuir, informe a origem da imagem utilizada.\n\n## Licença\n\nEste projeto está licenciado sob a [Licença MIT](LICENSE).\n","readmeFilename":"README.md"}