title: How to automate PDF form-filling in Java
body: <p>I am doing some "pro bono" development for a food pantry near where I live. They are inundated with forms and paperwork, and I would like to develop a system that simply reads data from their MySQL server (which I set up for them on a previous project) and feeds data into PDF versions of all the forms they are required to fill out. This will help them out enormously and save them a lot of time, as well as get rid of a lot of human errors that are made when filling out these forms.</p>
  
  <p>Not knowing <em>anything</em> about the internals of PDF files, I can foresee two avenues here:</p>
  
  <ul>
  <li><strong>Harder Way</strong>: It is possible to scan a paper document, turn it into a PDF, and then have software that "fills out" the PDF simply by saying "add text except <em>blah</em> to the following (x,y) coordinates..."; or</li>
  <li><strong>Easier Way</strong>: PDF specification already allows for the construct of "fields" that can be filled out; this way I just write code that says "add text excerpt <em>blah</em> to the field called *address_value*...", etc.</li>
  </ul>
  
  <p>So my first question is: which of the two avenues am I facing? Does PDF have a concept of "fields" or do I need to "fill out" these documents by telling the PDF library the pixel coordinates of where to place data?</p>
  
  <p>Second, I obviously need an open source (and Java) library to do this. iText seems to be a good start but I've heard it can be difficult to work with. Can anyone lend some ideas or general recommendations here? Thanks in advance!</p>