Skip to main content

Python library for generating Brazilian auxiliary fiscal documents in PDF from XML documents.

Project description

image image image image image beta

Brazil Fiscal Report

Python library for generating Brazilian auxiliary fiscal documents in PDF from XML documents.

Supported Documents

  • DANFE - Documento Auxiliar da Nota Fiscal Eletrônica (NF-e)
  • DACCe - Documento Auxiliar da Carta de Correção Eletrônica (CC-e )

Beta Stage Notice

This library is currently in the beta stage of development. While it has many of the intended features implemented, it is still undergoing testing and improvements. Users should note that during this phase, functionality may change and some instability may occur. We welcome feedback on any issues or suggestions for enhancements. Use in production environments should be approached with caution.

Dependencies:

  • FPDF2 - PDF creation library for Python
  • phonenumbers
  • python-barcode

To install:

pip install brazilfiscalreport

Usage examples

DANFE

from brazilfiscalreport.danfe import Danfe

# Path to the XML file
xml_file_path = 'nfe.xml'

# Load XML Content
with open(xml_file_path, "r", encoding="utf8") as file:
    xml_content = file.read()

# Instantiate the DANFE object with the loaded XML content
danfe = Danfe(xml=xml_content)

# Save the generated PDF to a file
danfe.output('danfe.pdf')

DACCe

from brazilfiscalreport.dacce import DaCCe

# Path to the XML file
xml_file_path = 'cce.xml'

# Load XML Content
with open(xml_file_path, "r", encoding="utf8") as file:
    xml_content = file.read()

# Instantiate the CC-e PDF object with the loaded XML content
cce = DaCCe(xml=xml_content)

# Save the generated PDF to a file
cce.output('cce.pdf')

Samples

Some sample PDFs generated by our unit tests are available for viewing in the tests/generated directory.

Customizing DANFE

This section describes how to customize the PDF output of the DANFE using the DanfeConfig class. You can adjust various settings such as margins, fonts, and tax configurations according to your needs.

Configuration Options

Here is a breakdown of all the configuration options available in DanfeConfig:

  1. Logo

    • Type: str, BytesIO, or bytes
    • Description: Path to the logo file or binary image data to be included in the PDF. You can use a file path string or pass image data directly.
    • Example:
      config.logo = "path/to/logo.jpg"  # Using a file path
      
    • Default: No logo.
  2. Margins

    • Type: Margins
    • Fields: top, right, bottom, left (all of type Number)
    • Description: Sets the page margins for the PDF document.
    • Example:
      config.margins = Margins(top=5, right=5, bottom=5, left=5)
      
    • Default: top, right, bottom and left is 2 mm.
  3. Receipt Position

    • Type: ReceiptPosition (Enum)
    • Values: TOP, BOTTOM, LEFT
    • Description: Position of the receipt section in the DANFE.
    • Example:
      config.receipt_pos = ReceiptPosition.BOTTOM
      
    • Default: TOP when portrait, LEFT when landscape orientation.
    • Note: In landscape orientation, the receipt position is far left; customization is not permitted.
  4. Decimal Configuration

    • Type: DecimalConfig
    • Fields: price_precision, quantity_precision (both int)
    • Description: Defines the number of decimal places for prices and quantities.
    • Example:
      config.decimal_config = DecimalConfig(price_precision=2, quantity_precision=3)
      
    • Default: 4
  5. Tax Configuration

    • Type: TaxConfiguration (Enum)
    • Values: STANDARD_ICMS_IPI, ICMS_ST_ONLY, WITHOUT_IPI
    • Description: Specifies the tax fields to be displayed.
    • Example:
      config.tax_configuration = TaxConfiguration.WITHOUT_IPI
      
    • Default: STANDARD_ICMS_IPI
    • WARNING: This feature is not yet implemented.
  6. Invoice Display

    • Type: InvoiceDisplay (Enum)
    • Values: DUPLICATES_ONLY, FULL_DETAILS
    • Description: Controls the detail level in the invoice section of the DANFE.
    • Example::
      config.invoice_display = InvoiceDisplay.DUPLICATES_ONLY
      
    • Default: FULL_DETAILS
  7. Font Type

    • Type: FontType (Enum)
    • Values: COURIER, TIMES
    • Description: Font style used throughout the PDF document.
    • Example::
      config.font_type = FontType.COURIER
      
    • Default: TIMES

Usage Example with Customization

Here’s how to set up a DanfeConfig object with a full set of customizations::

from brazilfiscalreport.danfe import (
    Danfe,
    DanfeConfig,
    DecimalConfig,
    FontType,
    InvoiceDisplay,
    Margins,
    ReceiptPosition,
    TaxConfiguration,
)

# Path to the XML file
xml_file_path = 'nfe.xml'

# Load XML Content
with open(xml_file_path, "r", encoding="utf8") as file:
    xml_content = file.read()

# Create a configuration instance
config = DanfeConfig(
    logo='path/to/logo.png',
    margins=Margins(top=10, right=10, bottom=10, left=10),
    receipt_pos=ReceiptPosition.BOTTOM,
    decimal_config=DecimalConfig(price_precision=2, quantity_precision=2),
    tax_configuration=TaxConfiguration.ICMS_ST,
    invoice_display=InvoiceDisplay.FULL_DETAILS,
    font_type=FontType.TIMES
)

# Use this config when creating a Danfe instance
danfe = Danfe(xml_content, config=config)
danfe.output('output_danfe.pdf')

Credits

This is a fork of the nfe_utils project, originally created by Edson Bernardino.

Maintainer

Engenere

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

brazilfiscalreport-0.3.4.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

BrazilFiscalReport-0.3.4-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file brazilfiscalreport-0.3.4.tar.gz.

File metadata

  • Download URL: brazilfiscalreport-0.3.4.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for brazilfiscalreport-0.3.4.tar.gz
Algorithm Hash digest
SHA256 75ab7322e4719d74cd9054bfa0036ac43022ff292c6300afe0e8ed91c6a73f38
MD5 60d17b9634412c04321c57b2f2ec254c
BLAKE2b-256 14cb5d5c6f232bd5014ef6c1b88fa9f9b92ea9681dbcf2825c31d5b0b4f7b044

See more details on using hashes here.

File details

Details for the file BrazilFiscalReport-0.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for BrazilFiscalReport-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ef4ed5f919ef6ef3e1333f48ab48aef33f98b0301ec91ad28b35eb62b3726d46
MD5 48debf95dc07ab216d1a79cb6b260726
BLAKE2b-256 2eb368a383baa3c40ba2d4942188b99462a7587460d22c82d89bff4dde61b30a

See more details on using hashes here.

Supported by

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