Hallo haderer,
wenn es auch Java sein darf, dann würde ich "iText" (itextpdf.com, Download: http://sourceforge.net/projects/itext/files/latest/download) empfehlen. Damit kommt man(n) sehr gut zurecht, wie ich finde.
Ein einfaches Codebeispiel in Java, um ein PDF-Formular (Musterformular als Anhang) zu füllen, sieht so aus:
public static void main(String[] args) throws IOException, DocumentException {
String form_template = "/home/petra/temp/Formular_1.pdf";
String form_filled = "/home/petra/temp/Formular_1_filled.pdf";
PdfReader reader = new PdfReader(form_template);
PdfStamper stamper = new PdfStamper(reader, new
FileOutputStream(form_filled));
AcroFields form = stamper.getAcroFields();
form.setField("EMail", "meine.email@provider.com");
form.setField("Anrede", "Frau");
form.setField("Vorname", "Petra");
form.setField("Nachname", "Mint");
form.setField("Ort", "Berlin");
form.setField("Mobil", "+49(0)123-1234567");
// form.setListSelection("choice_2", new String[]{"German", "Spanish"});
stamper.close();
reader.close();
}
Entsprechend umgesetzt in einen Java Notes Agent klappt das auch:
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
DocumentCollection dc = agentContext.getUnprocessedDocuments();
Document doc = dc.getFirstDocument();
String form_template = "c:/temp/Formular_0_template.pdf";
String form_filled = "c:/temp/Formular_1_filled.pdf";
PdfReader reader = new PdfReader(form_template);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(form_filled));
AcroFields form = stamper.getAcroFields();
form.setField("EMail", "meine.email@provider.com");
form.setField("Anrede", doc.getItemValueString("Anrede"));
form.setField("Vorname", doc.getItemValueString("Vorname"));
form.setField("Nachname", doc.getItemValueString("Nachname"));
form.setField("Ort", doc.getItemValueString("Ort"));
form.setField("Strasse", doc.getItemValueString("Lage"));
form.setField("Mobil", doc.getItemValueString("Telefon"));
stamper.close();
reader.close();
} catch(Exception e) {
e.printStackTrace();
}
}