
Security News
CISA’s 2025 SBOM Guidance Adds Hashes, Licenses, Tool Metadata, and Context
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
This gem generates PDF files for Brazilian DANFE (Documento Auxiliar da Nota Fiscal Eletrônica) from a valid NF-e XML. It also can generates PDF file for CC-e (Carta de Correção Eletrônica).
This gem requires ruby >= 2.0
.
XML version | Supported? |
---|---|
1.00 | no |
2.00 | yes |
3.10 | yes |
4.00 | yes |
gem install br_danfe
xml = File.read("spec/fixtures/nfe/v2.00/nfe_simples_nacional.xml")
danfe = BrDanfe::Danfe.new(xml)
danfe.options.logo = "spec/fixtures/logo.png"
danfe.options.logo_dimensions = { width: 100, height: 100 }
danfe.save_pdf("output.pdf")
class DanfeController < ApplicationController
def new
invoice = Invoice.find(params[:id])
xml_as_string = invoice.generate_xml # your method that generates the NF-e's xml
danfe = BrDanfe::Danfe.new(xml_as_string)
send_data danfe.render_pdf, filename: "danfe.pdf", type: "application/pdf"
end
end
class DanfeController < ApplicationController
def new
invoices = Invoice.where(ids: params[:ids])
xmls_as_string = []
invoices.each do |invoice|
xmls_as_string << invoice.generate_xml # your method that generates the NF-e's xml
end
danfe = BrDanfe::Danfe.new(xmls_as_string)
send_data danfe.render_pdf, filename: "danfe.pdf", type: "application/pdf"
end
end
logo_path
: Path of sender's logo image.logo_dimensions
: Dimensions of the logo. Ex: logo_dimensions = { width: 100, height: 90 }xml = File.read("cce.xml")
cce = BrDanfe::Cce.new(xml)
cce.save_pdf("nfe.pdf")
class CCeController < ApplicationController
def new
invoice = Invoice.find(params[:id])
xml_as_string = invoice.generate_xml # your method that generates the CC-e's xml
cce = BrDanfe::Cce.new(xml_as_string)
send_data cce.render_pdf, filename: "cce.pdf", type: "application/pdf"
end
end
xml = File.read("mdfe.xml")
mdfe = BrDanfe::Mdfe.new(xml)
mdfe.save_pdf("mdfe.pdf")
class MdfeController < ApplicationController
def new
mdfe = Mdfe.find(params[:id])
xml_as_string = mdfe.generate_xml # your method that generates the MDF-e's xml
mdfe = BrDanfe::Mdfe.new(xml_as_string)
send_data mdfe.render_pdf, filename: "mdfe.pdf", type: "application/pdf"
end
end
By default, your rails application must be configured to pt-Br
.
If you need to customize some message or field label, you can override the content of pt-Br.yml file.
You needs to build docker container like above:
$ docker-compose build
You can run all RSpec specs using:
$ docker-compose run --rm br_danfe rspec
You needs to install all necessaries dependencies using bunder like above:
$ bundle install
You can run all RSpec specs using:
$ bundle exec rspec
If you modify something that caused general visual changes at output pdf's, so you have to rebuild the fixtures pdf files.
You can do this simply deleting the fixture pdf file. The
have_same_content_of
matcher will recreate the fixture in the next time you run thebundle exec rspec
command.
The following variables are necessary to be set:
Environment var | Development? | Test? | CI? | Production? | Data |
---|---|---|---|---|---|
TZ | no | no | yes | no | America/Sao_Paulo |
BUNDLE_PATH | no | no | yes | no | vendor/bundle |
CC_TEST_REPORTER_ID | no | no | yes | no | get at codeclimate |
RAILS_ENV | no | no | yes | no | test |
Code coverage is available through of SimpleCov. Just run bundle exec rspec
and open the coverage report in your browser.
If you need to generate new danfes for using as fixtures, please don't use real data.
These data bellow are suggested:
Sender:
Field | Content |
---|---|
Name | Nome do Remetente Ltda |
Trade | Nome Fantasia do Remetente Ltda |
Address | Rua do Remetente |
Number | 123 |
Complement | Casa |
Neighborhood | Bairro do Remetente |
CEP | 12.345-678 |
City | São Paulo - SP |
Phone | (11) 1234-5678 |
CNPJ | 62.013.294/0001-43 |
IE | 526.926.313.553 |
Recipient:
Field | Content |
---|---|
Name | Nome do Destinatário PJ Ltda |
Address | Rua do Destinatário PJ |
Number | 345 |
Complement | SL 1 e 2 |
Neighborhood | Bairro do Destinatário PJ |
CEP | 23.456-789 |
City | Sumaré - SP |
Phone | (19) 2345-6789 |
CNPJ | 71.058.884/0001-83 |
IE | 671.008.375.110 |
IE ST | 611.724.092.039 |
Field | Content |
---|---|
Name | Nome do Destinatário PF |
Address | Rua do Destinatário PF |
Number | 345 |
Complement | 1o Andar |
Neighborhood | Bairro do Destinatário PF |
CEP | 98.765-432 |
City | Vinhedo - SP |
Phone | (16) 4567-8901 |
CPF | 485.325.574-57 |
RG | 11.420.947-9 |
Transporter:
Field | Content |
---|---|
Name | Nome do Transportador Ltda |
Address | Rua do Transportador, 456 |
City | Votorantim - SP |
CNPJ | 71.434.064/0001-49 |
IE | 964.508.990.089 |
You can generate new data using 4devs generators.
lib/br_danfe/version.rb
;$ bundle
;You can build or install the gem using one of the above tasks
$ bundle exec rake build # Build br_danfe-X.X.X.gem into the pkg directory
$ bundle exec rake install # Build and install br_danfe-X.X.X.gem into system gems
$ gem signin
$ gem signout
We encourage you to contribute to BrDanfe!
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)This project is based on Ruby DANFE gem.
BrDanfe is released under the MIT License.
FAQs
Unknown package
We found that br_danfe demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.