npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

danfse-pdf-generator

v1.0.1

Published

Geração local de DANFSe (PDF) a partir do XML da NFSe Nacional (NT 008/2026) via pdfmake

Downloads

55

Readme

danfse-pdf-generator

Geração local de DANFSe (PDF) a partir do XML da NFSe Nacional (NT 008/2026) via pdfmake. Sem dependência de APIs externas.

npm install danfse-pdf-generator

Uso

import { parseNfseXml, generateDanfsePdf } from 'danfse-pdf-generator'

const xml = '<?xml version="1.0"...' // XML da NFSe
const dados = parseNfseXml(xml)

const pdf = await generateDanfsePdf(dados, {
  ambienteGerador: '1', // '1' = Produção, '2' = Homologação
  logoUrl: 'data:image/png;base64,...', // opcional
  hideWarnings: false,
})

// pdf → Buffer do PDF (salve em disco, banco, ou response HTTP)

API

| Função | Input | Output | Descrição | |--------|-------|--------|-----------| | parseNfseXml | xmlString: string | NfseDados | Parseia XML da NFSe e extrai todos os dados | | generateDanfsePdf | dados: NfseDados, options? | Promise<Buffer> | Gera PDF do DANFSe localmente | | getDanfseDefinition | dados: NfseDados, options? | object | Retorna a definição pdfmake para customização | | formatCnpjCpf | val: any | string | Formata CPF/CNPJ (11/14 dígitos) | | formatChaveAcesso | val: any | string | Formata chave de 44 dígitos em grupos de 4 | | formatCurrency | val?: number | string | Formata moeda BRL ("R$ 1.234,56") | | formatPercentage | val?: number | string | Formata percentual ("3,50%") | | formatDateTime | val?: string | string | Formata data ISO → "10/03/2026 14:30:00" | | formatDateOnly | val?: string | string | Formata data ISO → "10/03/2026" | | formatCep | val: any | string | Formata CEP "22775-040" |

Para LLMs / Chat Agents

Este pacote foi documentado com JSDoc no estilo Google em todas as funções públicas e interfaces. Isso significa que LLMs (Copilot, Claude, ChatGPT, etc.) conseguem entender automaticamente como usar cada função.

Tool definition sugerida (function calling)

Para expor a geração de DANFSe como tool/function para um LLM:

{
  "name": "gerarDanfse",
  "description": "Gera o PDF do DANFSe (Documento Auxiliar da NFSe Nacional) localmente a partir do XML da nota fiscal. Retorna um Buffer do PDF.",
  "parameters": {
    "type": "object",
    "properties": {
      "xmlString": {
        "type": "string",
        "description": "XML completo da NFSe Nacional (NT 008/2026). Deve conter o elemento infNFSe."
      },
      "ambienteGerador": {
        "type": "string",
        "enum": ["1", "2"],
        "description": "1=Produção (verde), 2=Homologação (vermelho). Default: 1"
      },
      "logoUrl": {
        "type": "string",
        "description": "URL ou data-uri base64 do logo do prestador (opcional)."
      }
    },
    "required": ["xmlString"]
  }
}

Fluxo para LLM

  1. Usuário fornece XML da NFSe (arquivo ou string)
  2. LLM chama parseNfseXml(xmlString) → obtém NfseDados estruturados
  3. LLM chama generateDanfsePdf(dados, options) → obtém Buffer do PDF
  4. LLM retorna o PDF para o usuário (download, link, etc.)

Tipos exportados (com JSDoc)

Todos os tipos (NfseDados, Prestador, Tomador, Servico, Impostos, Endereco) têm JSDoc completo descrevendo cada propriedade. A LLM pode inspecionar os types diretamente.

Dependências

  • Node.js ≥ 18
  • pdfmake (inclui fontes Roboto)
  • fast-xml-parser