Logosulfite.app
rafagazani/sulfite 999999

CLI

Ferramenta de linha de comando para gerar PDFs a partir de JSON

CLI#

O sulfite_cli é uma ferramenta de linha de comando que recebe um relatório JSON e um payload, e gera um PDF. Não depende do Flutter SDK — é Dart puro.

Instalação#

Via Dart#

cd packages/sulfite_cli/
dart pub get
dart run sulfite_cli.dart -i report.json -d data.json -o output.pdf

Compilar para binário nativo#

cd packages/sulfite_cli/
dart compile exe sulfite_cli.dart -o sulfite
./sulfite -i report.json -d data.json -o output.pdf

O binário compilado roda sem o Dart SDK instalado.

Opções#

FlagLongaObrigatórioDescrição
-i --input Sim Caminho para o JSON de definição do relatório
-d --data Sim Caminho para o JSON de payload
-o --output Sim Caminho do PDF de saída
-f --fonts Não Reservado para fontes customizadas (ainda não implementado)
-v --verbose Não Log detalhado
-h--helpNãoExibir ajuda

Exemplo#

# Gerar nota fiscal
./sulfite -i examples/01-invoice/report.json \
          -d examples/01-invoice/data.json \
          -o invoice.pdf

# Com log detalhado
./sulfite -i report.json -d data.json -o output.pdf -v

Fontes customizadas (status atual)#

O diretório de fontes deve conter arquivos TTF com estes nomes:

fonts/
├── regular.ttf
├── bold.ttf
├── italic.ttf
└── bolditalic.ttf
./sulfite -i report.json -d data.json -o output.pdf -f ./fonts/

Nota: no estado atual do CLI, a flag -f ainda não carrega fontes. O renderer usa Helvetica.

Pipeline#

O CLI executa a mesma pipeline do engine:

  1. Lê e parse do JSON do relatório → ReportDefinition
  2. Lê o JSON de payload
  3. DataProcessor.process()ProcessedData
  4. PdfRenderer.render() → bytes do PDF
  5. Escreve o arquivo de saída

Limitações#

  • Gera apenas PDF (sem HTML, CSV ou Excel)
  • Suporte a fontes customizadas via -f ainda não implementado no CLI