Skip to main content

Hermes Reports: engine leve de relatórios baseada em templates JRXML.

Project description

Hermes Reports

Hermes Reports é uma engine leve para renderizar relatórios a partir de templates JRXML do Jasper Studio. A proposta do projeto é servir como uma alternativa programável ao JasperServer, mantendo uma API Python simples e saídas em html, pdf, csv e xlsx.

O namespace público oficial é hermes_reports. O namespace report_engine continua disponível como compatibilidade.

O que o projeto suporta hoje

  • templates JRXML com raiz <jasperReport>
  • bands title, pageHeader, detail, summary, columnFooter, pageFooter e lastPageFooter
  • staticText, textField, image, subreport, jr:table, jr:Code128 e jr:QRCode
  • parameter, variable e printWhenExpression
  • expressões Jasper simples com $F{}, $P{} e $V{}
  • exportação html, pdf, csv, xlsx e alias xmlx

Limites atuais do suporte JRXML

  • o projeto importa um subconjunto pragmático do JRXML, não o dialeto completo do JasperReports Server
  • jr:table é o caminho preferido para coleções aninhadas em dict
  • layout posicionado do Jasper é convertido para a ordem de leitura do motor interno
  • o PDF continua com base em reportlab
  • barcode e qrcode dependem de reportlab, inclusive no HTML

Instalação

uv sync

Ou:

pip install -e .

Uso

from hermes_reports import ReportEngine

dados = {
    "titulo": "Relatório de Vendas",
    "periodo": "01/01/2026 a 31/01/2026",
    "itens": [
        {"produto": "Notebook", "quantidade": 10, "valor": 3500},
        {"produto": "Mouse", "quantidade": 50, "valor": 80},
    ],
}

engine = ReportEngine("hermes_reports/templates/vendas.jrxml")

html = engine.render(dados)
pdf = engine.render(dados, output="pdf")
csv_text = engine.render(dados, output="csv")
xlsx_bytes = engine.render(dados, output="xlsx")

Para gravar em arquivo:

engine.render_to_file(dados, "relatorio.html")
engine.render_to_file(dados, "relatorio.pdf")
engine.render_to_file(dados, "relatorio.csv")
engine.render_to_file(dados, "relatorio.xlsx")

Parâmetros externos continuam separados dos dados:

engine.render_to_file(
    dados,
    "relatorio.pdf",
    parameters={
        "empresa": "Hermes Reports Brasil",
        "responsavel_relatorio": "Operações",
    },
)

Compatibilidade:

from report_engine import ReportEngine

CLI

hermes-reports hermes_reports/templates/vendas.jrxml hermes_reports/examples/01_basico_vendas.json -o /tmp/vendas.html
python -m hermes_reports hermes_reports/templates/vendas.jrxml hermes_reports/examples/01_basico_vendas.json -o /tmp/vendas.pdf -f pdf

Com parâmetros:

python -m hermes_reports \
  hermes_reports/examples/05_subreport_parametros_variaveis.jrxml \
  hermes_reports/examples/05_subreport_parametros_variaveis.json \
  --params hermes_reports/examples/05_params.json \
  -o /tmp/exemplo05.html

Exemplos

Os exemplos oficiais ficam em hermes_reports/examples:

  • 01: cabeçalho, tabela e total
  • 02: formatação de data, número e moeda
  • 03: estilos e layout
  • 04: bands de página
  • 05: subreport, parâmetros e variáveis
  • 06: expressões e printWhenExpression
  • 07: imagens, barcode, qrcode e cores

O helper abaixo renderiza os exemplos:

python -m hermes_reports.examples.run_examples --example all --format html

Template oficial

O formato oficial do projeto agora é JRXML. Veja:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_reports-0.2.1.tar.gz (59.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_reports-0.2.1-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file hermes_reports-0.2.1.tar.gz.

File metadata

  • Download URL: hermes_reports-0.2.1.tar.gz
  • Upload date:
  • Size: 59.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hermes_reports-0.2.1.tar.gz
Algorithm Hash digest
SHA256 91301393fd9b2cd4fe9ee9394489b9c047988cd02230047445bd06f466a7a7af
MD5 65c78a07873637a27abc7fca4356fdb7
BLAKE2b-256 5d9d5768cc54afbeb53f5d0eca9d9ed9b86cbbe25282be2e42b926c2e6759c75

See more details on using hashes here.

File details

Details for the file hermes_reports-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: hermes_reports-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for hermes_reports-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 31c318f71f4b300c4c9030cc866dffcb646bf0f7e26fd992df3692d849654bb6
MD5 eea90803ca8d32c3210436072a5aaad9
BLAKE2b-256 00f90d4c8a3332d3efaa57ecb72009766e165af1e7cf072c25cde33830628db6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page