InvoicePDF

InvoicePDF is a Ruby gem to easily create PDF invoices within your application.

I created this to be easily extensible by creating and specifying your own generators to create invoices fit for your use.

Getting Started

  1. Install InvoicePDF as you would any other gem

gem install invoicepdf

  1. Include the gem in your Gemfile for Rails applications

gem “invoicepdf”

  1. Start using it in your application

invoice = InvoicePDF::Invoice.new( :company => “Drew Tempelmeyer”, :company_address => “555 55th StnNew York, NY 00000”, :bill_to => “John Doe”, :number => “AZ-100”, :notes => “Test invoice”) invoice.items << InvoicePDF::LineItem.new(:description => “Here is a line item”, :price => 495.00, :quantity => 5) invoice.save

Using a generator

Generators are what actually create the PDF. This allows you to customize the appearance of your invoice by creating a new generator. Have a look at lib/generators/standard.rb for an example.

Specifying the generator to use is easy. When creating your Invoice object, use the :generator attribute. invoice = InvoicePDF::Invoice.new( :generator => InvoicePDF::Generators::Standard.new, :company => “Drew Tempelmeyer”, :company_address => “555 55th StnNew York, NY 00000”, :bill_to => “John Doe”, :number => “AZ-100”, :notes => “Test invoice”)

We’re using the InvoicePDF::Generators::Standard generator to create our invoice. When you save the invoice, it will call the create_pdf method inside your generator (in this example InvoicePDF::Generators::Standard.create_pdf).

Creating a generator

All generators should be contained within the InvoicePDF::Generators module. Your generator needs to have the create_pdf method.

A barebones generator would look something like the following module InvoicePDF module Generators class Barebone include InvoicePDF::Helpers # if you need the helpers def create_pdf( invoice ) Prawn::Document.generate(“#invoiceinvoice.file_path/#invoiceinvoice.file_name”, :dpi => 72) do |pdf| pdf.text “Invoice #invoiceinvoice.number” end end end end end

This would simply create a PDF in your specified directory with the specified file name.

PDF generation is done by using the Prawn gem (prawn.majesticseacreature.com/docs/).

Contributing to InvoicePDF

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet

  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Commit and push until you are happy with your contribution

  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright © 2010 Drew Tempelmeyer. See LICENSE.txt for further details.