= check_writer A ruby gem to help generate checks in PDF format. It generates PDF checks that look something like this[https://github.com/rylwin/check_writer/raw/master/spec/assets/test-0.12.0.pdf]. Print that PDF on check stock and you've got yourself a real check. == Project Status A version of this code has been used in a production application for a couple of years and we are finally getting around to extracting the check writing code. As we go through this process, there may be significant changes to the API. You've been warned. Currently the only check stock format that is supported is the 1/3 bottom check. You can get some check stock at Amazon[http://www.amazon.com/gp/product/B002HIV1KQ/ref=as_li_qf_sp_asn_il_tl?ie=UTF8&tag=checkwriter-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=B002HIV1KQ], amongst other places. == GnuMICR check_writer uses GnuMICR (http://www.sandeen.net/GnuMICR) to print the MICR numbers at the bottom of the check. Please read the notes on the GnuMICR site. We have not had any issues using this font (2+ years now), but that is no guarantee. == Example @check = CheckWriter::Check.new( :number => '12345', # the check number :date => Date.yesterday, # Default: today :payee_name => 'John Smith', :payee_address => ['Line 1', 'City, State, Zip'], # Array of as many lines as desired :payor_name => 'Payor Name', :payor_address => ['Line 1', 'City, State, Zip'], :bank_name => 'Bank of America', :bank_address => ['Line 1', 'City, State, Zip'], :bank_fraction => '12-9876/1234', :routing_number => '1234567689', :account_number => '123456789', :amount => '1003.23', :memo => 'Memo: Void after 60 days' ) check.to_pdf # returns PDF file data If you set the +with_stubs+ option to +true+ you'll get a bit of formatting and information displayed in the top and middle check stub. Here's an example[https://github.com/rylwin/check_writer/raw/master/spec/assets/with_stubs-0.12.0.pdf]. It is also possible to include additional data in the stubs in the form of a table. If +with_stubs+ is true, then passing a 2D array to +stub_table_data+ will generate a table within each stub. To pass options to Prawn's #table method, set +stub_table_options+ with a hash of options. Example here[https://github.com/rylwin/check_writer/raw/master/spec/assets/with_stub_table_data-0.12.0.pdf]. Instead of just returning a PDF, you can access the Prawn PDF writer object (Prawn::Document), which you can use to further customize the check or even include multiple checks on the same PDF: pdf = check1.to_prawn pdf.start_new_page # this is a prawn method pdf = check2.to_prawn(pdf) pdf.render # returns the PDF data for a PDF w/ two checks on two pages == Signatures Signatures can be included on the checks by setting the +:signature_image_file+ option, which should reference a JPG or PNG image. The recommended dimensions for a signature image are 175px x 40px. == Tests check_writer uses the appraisal gem to facilitate testing of various versions of prawn. To run the tests using appraisal: $ rake appraisal Note that if you need modify the Gemfile and need to re-bundle, you will also have to reinstall the appraisal gemfiles as well. To do this, your must first remove the +:development+ group from the Gemfile (i.e., the gems in the development group need to be bundled along with the rest of the gems, so they cannot be isolated in the dev group). Once you have done this, run: $ rake appraisal:install After appraisal installs its gemfiles, you can revert your Gemfile to as it was before. == Contributing to check_writer * 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 Font: The GnuMICR font is distributed under GPL, but please note the additional comments from the font creator in the GnuMICR README[https://github.com/rylwin/check_writer/tree/master/vendor/GnuMICR-0.30]. Copyright (c) 2012 Ryan Winograd. See LICENSE.txt for further details.