Developers
Update There is now a
developers
package available. It is about 3 months dated, but it is much more
up-to-date than the directions here. I will be posting an update to the package shortly.
The following is mostly deprecated
So you want to help with the project. There's a form you'd like to
code, but you're not sure where to start.
Well you've come to the right place. First ensure you've got all the
TaxGeek prerequisites installed. Then
go and get yourself ImageMagick.
Once everything is installed, you are ready to start helping.
The Easy Way to Help
Our existing forms need validation. If you have a pdf viewer, an installed version of TaxGeek
and a bit of time, go
to see what you can do.
The More Involved Way to Help
In this case, you want to get your hands dirty and work with code. Most of my code is documented.
Much is sloppy as it was originally written quite quickly. Although the API is starting to come
together with TaxGeek06c. What follows below is a how-to on getting up to speed with the
coding and what you can do.
- First look at Form 1040 from TaxGeek and see what is marked in
red. These forms need development.
And fortunately for you, the PDF files are included with TaxGeek.
- Let's say you want to code Schedule F. Click on the form from
1040, and print it for your reference.
Then code the HTML/Javascript that's needed for the form to interact.
You might wish to have a look at the following functions:
- saveForm()
- readFormData()
- getForm()
- saveConfig()
- readConfig()
- getCurrProject()
which can be found in "dataIO.js". Study how they are used in form 1040
or any of the schedules. (Schedule C
is different - but we won't get into that now.) Study the popup
functions in form 1040 (showScheduleB(), etc...)
to get an idea of how a form's information gets back to form 1040. Your
form's javascript must follow the
algorithms given by the IRS which are clearly marked on the forms.
- Test your form by entering data. Make sure it's doing what you
expect it to do. Make sure it saves
a copy of your data properly. I would encourage you to use the
testproject project so that you can see if any effects propagate to
other parts of the tax return that you don't expect.
- Copy a data file associated with the form into the coordinates directory. If your form was form 2106, a two
page form, break up the file into two halves (one for each page such that the fields in each correspond to the
appropriate page). The first coordinate file would have the name "f2106_p1.dat"
and the second "f2106_p2.dat". Then replace any data in these files with the coordinates 0:0 (So
if the field i1 looked like i1:23.00 in the data file, in the coordinate text file
it should be changed to i1:0:0.)
- prepPDF2.pl will create a jpg of the file which can be loaded into the browser for position registration. However,
you will need to add your form. Study the contents of this file for how to add a new form.
- prepPDF2.pl will then convert the pdf to ps and back to pdf. Why? Because the IRS supplied PDFs don't
work so well with the annotation functions from PDF::Reuse that we will need later. This double conversion
seems to get rid of the problem by flattening the PDF. (Update 10/15/06) If anyone knows how to extract field names
from these IRS forms, we may be able to move forward more quickly by using the PDF::Reuse function prField() to
place values where the IRS originally intended. This would be a better and faster solution than what is currently
done.
- Now, open up the file "makeform.htm" in the base directory of TaxGeek. This will enable you to register
the HTML form contents to the geometric locations on the PDF file. You will find IRS pdf files in the "forms"
directory. Choose the jpg of the pdf file in the menu pane, then choose your data file that you just saved, enter the
form name and any offsets (x=-30, y=0 seems to work pretty well) and click on the button.
- At the right of the window, a list of field names will appear. Click on them one at a time and
click the mouse on the page to where you wish to place the fields. Note the following rules
used by the annotation routines:
1) All text strings are left aligned. So select the bottom left hand corner of where you want
the text to appear.
2) All numbers with the exception of SSNs and EINs are right aligned, so select the bottom right
hand corner of where you want them to appear. Treat SSNs and EINs as text strings.
(Note, the blue markers that indicate text placement take some getting used to.
- Finally, you will need to modify process2pdf.htm and annotate1.pl for the pdf processing to get done.
[UPDATE: In one of the upcoming releases this spring (2007), I will be implementing a much improved development
package to make this a bit easier. Stay tuned!]