Notes to self

InvoicePrinter 1.1.0 will bring A4 page size support, command line client and more

Not so long ago I announced first stable release of InvoicePrinter. I wanted to say that the API is stable and people to experiment with it. I am happy  to see that the project got already over 3 hundred stars and 20 forks. Wow, thanks! This kind of support motivates me to work on the next version more intensively.  Speaking of which… here is what’s coming in 1.1.0 release.

A4 page size support

When I started this project I didn’t think too much about paper versions since I was always handling invoices online. Prawn default is letter size and not A4 and that’s why the first version supported only this letter page size (not to be confused with full American letter support in terms of position of the purchaser address, it’s not supported yet).

Luckily Joel “The Merciless” Meador started to experiment with the support of both letter and A4 page sizes, I took over the experiment, finished it and we now support both!

To generate A4 page size invoice just set page_size to :a4.

InvoicePrinter.print(
  document: invoice,
  labels: labels,
  page_size: :a4,
  file_name: 'invoice.pdf'
)

All examples on GitHub now come with and are tested against both letter and A4 versions.

Fixed paddings

The side effect of working on proper A4 page size support is that I realized how off the initial layout was. Both letter and A4 versions now enjoy much more pixel perfect layout which I hope I can make 100% perfect in the upcoming versions.

JSON support

You can now (de)serialize InvoicePrinter objects to JSON. The following methods are now available:

InvoicePrinter::Document.new(...).to_json
InvoicePrinter::Item.new(...).to_json
InvoicePrinter::Document.from_json(json)
InvoicePrinter::Item.from_json(json)

Command line client

In case you would like to invoice from command line like true hackers (do they? do they really?) I included invoice_printer  executable. This is also handy if you just want to shell out from different programs. To use this you must provide the invoice in JSON format. If you are unsure how that looks like just create standard Ruby object of the invoice and call to_json. That easy.

Command line support needs more testing right now. You can run invoice_printer command with --debug option in case you will face some errors.

As always, please help me to test the release candidate before the final version:

$ gem install invoice_printer --pre
Check out my book
Deployment from Scratch is unique Linux book about web application deployment. Learn how deployment works from the first principles rather than YAML files of a specific tool.
by Josef Strzibny
RSS