Um mittels Java PDF-Dateien erzeugen und bearbeiten zu können, benötigt man zunächst ein Framework, das die benötigten Funktionen bereitstellt. Listen mit möglichen Bibliotheken gibt es z.B. hier: Java libraries to read and write PDF files, Open Source PDF Libraries in Java.
Ich habe mich für iText entschieden. Nachdem man erstmal die Erzeugung der iText.jar mittels ant hinbekommen hat (siehe How I install my development environment for iText (ANT)) ist der Rest ein Kinderspiel. Das folgende Programm fügt dem ausfüllbaren PDF Antrag.pdf den Wert Berlin in das benannte Feld Wohnort ein und speichert die Datei als AntragAusgefuellt.pdf.
package com.stefanmacke.test;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import java.io.*;
import java.util.*;
public class PDFTest
{
public static void main(String[] args)
{
try
{
PdfReader reader = new PdfReader("Antrag.pdf");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos);
AcroFields form = stamper.getAcroFields();
form.setField("Wohnort", "Berlin");
stamper.close();
FileOutputStream fos = new FileOutputStream("AntragAusgefuellt.pdf");
baos.writeTo(fos);
fos.flush();
reader.close();
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
Update 18:34 Uhr: Habe gerade noch einen Beitrag zum selben Thema im RubyPDF Blog gefunden. Allerdings verwendet der Autor dort iTextSharp, weshalb ich die Lösung natürlich ein wenig schöner finde 😉
Ist mit den Frameworks, die dafür benötigt werden, die Einstellung vom Server gemeint?
Laut php.net muss PDFLib auf dem Server installiert sein
http://de3.php.net/manual/de/pdf.setup.php
Ähem… es handelt sich hier um eine Java-Anwendung, nicht um PHP. Welche Bibliotheken oder welches Framework du unter PHP zur PDF-Bearbeitung einsetzen kannst, weiß ich leider nicht 🙁
Also muss an den Einstellungen des Servers nichts geändert werden und die Bibliotheken werden automatisch bezogen?
Eine andere Frage hätte ich da auch noch =)
Können dort auch Daten aus Datenbanken eingelesen werden?
Ich danke auf jeden Fall =)