Makecheque: A Check-printing Tool
Copyright 2003, 2004 by Henry House (hajhouse@houseag.com)
GPL license
http://www.hajhouse.org/linux/makecheque/
This is Makecheque, a tool (written in Ruby) to print bank cheques, either using bank-supplied stationey, or blank check paper (in conjuntion with a MICR font and perhaps special laser toner). It is intended to be used as part of an interactive bookkeeping system. Makecheque quickly and easily prints large batches of checks based on textual format specifications given as standard input and emits ready-for-printer Postscript on standard output.
This is the second release; the program is feature-complete and has no known bugs, except for a paucity of documentation. I wrote this program for use with a business accounting system that I am developing. That software is not released yet, though if you would like to work on a prelease version I would happily accept your help. The accounting software is written in Ruby, using Tk for the interface and PostgreSQL for data storage and retrieval.
This distribution includes a copy of GnuMICR, a free (GPL) MICR font that can be used to print the bank routing code at the bottom of your checks. (Source: <http://lager.dyndns.org/GnuMICR/download/latest/>.) You will do this if you have blank check paper rather than preprinted stationery. The original README file from GnuMICR is included as README.GnuMICR. The file symbols.png from GnuMICR is also included; it shows correspondences between the non-ASCII MICR symbols to ASCII positions in the font.
In my experience, the checks produced by this program have always been accepted by my bank. However, this software comes with no waranty or guarantee of any kind. Banks could reject your checks and then charge you a check rejection fee! See LICENSE (below) and the file COPYING for details about the lack of warranty.
REQUIREMENTS
- A working Ruby interpreter; I use Ruby 1.8 but older versions probably work fine
- The iconv Ruby library is required only if you use the -U flag (UTF8-input mode)
- Ghostscript, if you wish to print to a non-Postscript laser printer
INSTALLATION
Copy the files to their destinations:
bin/makecheque -> /usr/local/bin (this is just a symlink)
share/makecheque/ -> /usr/local/share
If your check paper is not the same size and shape as mine, you will need to create a new check specification. Look in share/makecheque/chequetypes/2stubtop.spec for an example that you may modify for your needs. Sorry for the lack of documentation, but I think the contents of the spec file will yield to your will if you measure carefully and keep the proper syntax. (The spec file is inserted into the Postscript output, so it must be valid Postscript itself.)
USAGE
Usage: makecheque -s<cheque paper type> [num1 num2 ... num<n>] [options]
-s<type>, --spec=<type>
Format printing to cheque paper type named <type>. Required.
<num>
Blank cheque mode: for each <num> in command line, where
<num> is either a single integer or a dashed range (e.g,
"1-2"), print routing number, labels, etc, onto blank
cheque paper for handwriting or later use with batch mode.
Conflicts with -b and -B.
-b, --batch-mode
Batch mode: read cheque specifications from standard input,
one per line, in the format
<cheque number>|<amount>|<date>|<payee>|<upper stub>|<lower stub>
to print onto preprinted cheques or cheques created by
blank cheque mode. Semicolons in <payee> become line breaks.
-B, --blank-cheque-batch-mode
Like batch mode, but print routing number, etc, as well
as in blank cheque mode. This mode allows one-step printing.
-C<str>, --company-name=<str>
Set cheque payer's name and address to <str>. Lines are separated by
semicolons. The first line (presumably the name) will be printed
larger and in bold.
-A<str>, --bank-address=<str>
Set issuing bank's name and address to <str>. Lines are separated by
semicolons.
-R<str>, --routing-code=<str>
Set bank routing code to <str>. Special MICR symbols are A, B, C,
and D (see the GnuMICR font documentation). To insert cheque number,
the formatting string %06i will work (replace 6 with the required
number of digits); this string is passed to printf(3).
-m, --test-margin
Print margin test lines on each cheque.
-t, --test
Test run: print "specimen" as watermark on each cheque.
-o FILE
Write output to FILE.
-h, --help, --usage
Show this help.
-U, --UTF-8
Input charset is assumed to be UTF-8; only a subset of
chars found in ISO-8859-15, plus entire ISO-8859-1, is supported.
EXAMPLE OF USAGE
echo '0|225.62|2004-07-22|John Q Member;715 Arthur Street;Davis, CA 95616|;;Description: Reimburse cash expenses;$ 210.62: books;$ 15.00: Pizza;|Description: Reimburse cash expenses;Acct #505: $ 210.62: books;Acct #528: $ 15.00: Pizza;Acct #101: $ -225.62: ;|' | \ makecheque -B -s2stubtop '-RC%00iC A000000000A00 00000 6C' "-CLINUX USERS' GROUP OF DAVIS;PO Box 837;Davis, CA 95616" '-AFIRST NORTHERN BANK;434 Second Street;Davis, CA 95616;90-515/1211'
(Yes, that is two very long lines.)
LICENSE
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
A copy of the GNU General Public License is included in the file COPYING.
