AWT-Print-Package

Das AWT-Print-Package ermöglicht das Template-basierte Drucken von z.B. Formularen.

Der Druck eines Formulars wird erreicht, indem eine Instanz der Klasse Job erzeugt wird und deren run-Methode ausgeführt wird. Die Argumente des Konstruktors sind ein Template und ein StringDictionary (siehe Collections-Package), das die Bindungen für variable Teile des Formulars enthält.

Templates sind spezielle XML-PropertySets (siehe XML-PropertySet), die die Position und das Aussehen von Komponenten auf einer Seite festlegen. Als Komponenten sind mehrere Arten von Beschriftungen erlaubt (label, numeric-label, multiline-label).

Die Struktur des Templates ist wie folgt:

<print-job>
  <page>
    [<paper>
      <width>#</width>
      <height>#</height>
      <printable-left>#</printable-left>
      <printable-top>#</printable-top>
      <printable-width>#</printable-width>
      <printable-height>#</printable-height>
    </paper>]
    [<orientation>(landscape)|(portrait)|(reverse-landscape)</orientation>]
    <content>
      <component>...</component>+
    </content>
  </page>+
</print-job>

Ein Print-Job (print-job) enthält mindestens eine Seite (page). Die Seite enthält eine optionale Angabe der Papiergröße (width, height, ... jeweils Angabe von Ganzzahlen in 10tel Milimetern), eine optionale Angabe der Seiten-Orientierung (orientation, entweder landscape, portrait oder reverse-landscape) sowie den eigentlichen Seiteninhalt (content).

Der Seiteninhalt besteht aus mindestens einer Komponente (component). Komponenten haben folgende Struktur:

<component>
   <type>(label)|(numeric-label)|(multiline-label)|(polyline)</type>
  <name>$</name>
  <attributes>...</attributes>
</component>

Komponenten haben einen Typ (type, entweder label, numeric-label, multiline-label oder polyline), einen Namen (name) und Attribute (attributes).

Die zu definierenden Attribute hängen vom Komponententyp ab.

Für alle Labels, Numeric-Labels und Multiline-Labels muss die Position horizontal (entweder <left>#</left>, <right>#</right> oder <center>#</center>) und vertikal (<top>#</top>) angegeben werden. Es kann eine Schrift (font-name), der Stil (style, entweder bold, italic, bold-italic oder plain) und die Schriftgröße (size) angegeben werden.

Für Komponenten vom Typ Label und Multiline-Label kann das Attribut is-optional angegeben werden. In diesem Fall muss noch der Text (text) definiert werden. Bei optionalen Labels kann nicht der Text durch das StringDictionary gesetzt werden, sondern das StringDictionary enthält einen Wahrheitswert. Der Wahrheitswert entscheidet, ob das Label dargestellt wird, oder nicht.

Für Multiline-Labels muss die Breite in Zeichen (columns) festgelegt werden.

Numeric-Labels haben zwingend ein Format (format).

Für Komponenten des Typs Polyline kann das Attribut Strichstärke (stroke-width) angegeben werden. Ist das Attribut is-closed vorhanden, wird die Polylinie automatisch zu einem Polygon ergänzt. Polylinien müssen mehrere Punkte definieren:

<point>
  <x>#</x>
  <y>#</y>
</point>

Die Quelltexte unterliegen der Modified Artistic License v1 und finden sich in der Version v2 in der unten verlinkten Jar-Datei mit dem Namen awtprintsrc.jar.

Zusätzlich werden noch das Collections-Package, das Property-Set-Package und das XML-Utils-Package benötigt.


awtprintsrc.jar