Freitag, 25. Januar 2013

Befüllen dynamischer PDF-Formulare mit iText 2.1.7

Zur Bearbeitung von PDF bietet sich unter Java insbesondere die iText-Bibliothek an. Bis Version 2.1.7 konnte iText unter LGPL frei genutzt werden, anschließend wurde das Lizenzmodell geändert. Für die kommerzielle Nutzung späterer Versionen werden Gebühren fällig. Für kleine und mittlere Projekte wird Version 2.1.7 daher noch gern genutzt. Die Schwächen liegen hier vor allem in der Bearbeitung von dynamischen PDF nach XFA-Standard (XML Forms Architecture) ab PDF-Version 1.5.
Zumindest das Befüllen dynamischer Formulare ist jedoch auch mit der angestaubten Bibliothek ohne weiteres möglich. Im Beispiel wurde aus einem XML-Schema ein einfaches Formular generiert:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="modelData" type="modelDataDef"/>

  <xs:complexType name="modelDataDef">
    <xs:sequence>
      <xs:element name="author" type="xs:string"/>
      <xs:element name="cars" type="carsDef"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="carsDef">
    <xs:sequence>
      <xs:element name="car" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="manufacturer" type="xs:string"/>
            <xs:element name="type" type="xs:string"/>
            <xs:element name="color" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>