Eine ausfüllbare PDF-Datei mittels Java mit Werten füllen

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 😉

Über Stefan

Polyglot Clean Code Developer

3 Kommentare

  1. 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

  2. Ä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 🙁

  3. 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 =)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax