Untergeordnete Seiten
  • Wasserzeichen und Kopfzeilen mit dem ContentsCreatorPageSegment
Zum Ende der Metadaten springen
Zum Anfang der Metadaten
Gültig ab jadice documentplatform 5.5.0.4 / jadice web toolkit 5.7.0.0
Dieser Artikel beschreibt, wie Seitenmodifikationen mit dem ContentsCreatorPageSegment durchgeführt werden können

 

 

Dieser Artikel gibt eine Einführung zur Erzeugung eigener PageSegments, die beim Druck oder bei der Anzeige verwendet werden können, um zusätzliche Informationen auf ein Dokument aufzubringen. Hierzu wird gezeigt, wie mit der API des ContentsCreatorPageSegmentBuilder Inhalte eines PageSegment definiert werden und anschließend damit ein PageSegment erzeugt wird.

 

Anforderungen

Es soll ein PageSegment erzeugt werden, das Informationen enthält, mit denen ein Dokument bei Anzeige oder Druck angereichert wird. Mögliche Anwendungsfälle für ein solches PageSegment sind beispielsweise

  • Das Aufbringen einer Kopfzeile auf dem ursprünglichen Dokument
  • Das Aufbringen eines Wasserzeichen
  • Verkleinern des eigentlichen Seiteninhalts, um Zusatzinformationen aufzubringen

 

Lösungsansätze

 

Überblick

Um diese Anforderungen zu erfüllen, stellt jadice das ContentsCreatorPageSegment bereit. Zur Erzeugung eines ContentsCreatorPageSegment wird zunächst mit der API des ContentsCreatorPageSegmentBuilder der Inhalt des PageSegments definiert. Beim Aufruf der finish()-Methode des Builders wird dann ein PageSegment mit den definierten Inhalten erzeugt. Das so erzeugte ContentsCreatorPageSegment implementiert das jadice PageSegment-Interface und kann entsprechend verwendet werden. Durch die Definition des Dokumentenlayers, in dem das PageSegment eingebunden wird, werden Sichtbarkeit und Überdeckung des PageSegment festgelegt. Detaillierte Informationen zum jadice-Dokumentenmodell finden sich in der jadice-Dokumentation.

 

 

Beispielimplementierungen

Icon

Um den Beispielcode besser lesbar zu machen, findet das Laden der Seite und des verwendeten Fonts in separaten Klassen statt. Diese können rechts heruntergeladen werden.

 

Hinzufügen einer Kopfzeile auf einer Seite

In diesem Beispiel wird eine Kopfzeile auf einer Seite aufgebracht. Dazu wird zunächst mit dem ContentsCreatorPageSegmentBuilder ein ContentsCreatorPageSegment erzeugt, das den Text der Kopfzeile enthält. Anschließend wird dieses ContentsCreatorPageSegment auf die Seite aufgebracht. Eventuell vorhandene Inhalte des Ur-Dokuments werden dabei durch die Kopfzeile überdeckt.

Icon

Durch Ausführen der main()-Methode wird die angeforderte Seite aus der gegebenen Datei gelesen und das in createSimpleTextPageSegment() erzeugte PageSegment auf diese Seite aufgebracht. Anschließend wird die Seite mit dem neuen PageSegment in ein BufferedImage gerendert und in einem JFrame dargestellt.

HeadlineExample.java
Die Ur-Seite:
Darstellung einer gerenderten Seite ohne Modifikationen
Seite mit Kopfzeile:
Darstellung einer gerenderten Seite mit einer Kopfzeile in schwarzer Schrift die die Dokumenteninhalte überdeckt.

 

 

Wasserzeichen auf einer Seite

In diesem Beispiel wird ein Wasserzeichen auf einer Seite aufgebracht. Dazu wird wieder mit dem ContentsCreatorPageSegmentBuilder ein ContentsCreatorPageSegment erzeugt, das das Wasserzeichen enthält. Anschließend wird dieses PageSegment auf die Seite aufgebracht.

Das Wasserzeichen soll folgende Eigenschaften haben:

  • Der Text des Wasserzeichens lautet "COPY"
  • Die Farbe des Texts ist halbtransparent 
  • Der Text ist um 45 Grad gedreht 
  • Der Text ist so eingepasst, dass er maximal 80% der Breite oder der Höhe der Seite einnimmt.
Icon

Für PrintDecorations gibt es zwei vordefinierte Layer:

  • Elemente im Layer PrintDecorations.PREDECORATION werden in den Hintergrund gelegt. Die Inhalte der Seite werden nicht verdeckt.
  • Elemente im Layer PrintDecorations.POSTDECORATION werden in den Vordergrund gelegt. Die Inhalte der Seite werden eventuell verdeckt

 

Hierzu wird ähnlich wie im Beispiel  "Hinzufügen einer Kopfzeile" ein PageSegment erzeugt, das einen Text enthält. Um diesen einzupassen und zu drehen, werden verschiedene Transformationen angewendet.
Zur Berechnung der Transformationen werden ContentsCreatorControls definiert, die den Text gedreht in einer bestimmten Textgröße rendern würden. Die so ermittelte Dimension dient dann als Grundlage zur Berechnung der Skalierung auf 80% der Höhe oder der Breite. 

 

Icon

Durch Ausführen der main()-Methode wird die angeforderte Seite aus der gegebenen Datei gelesen und das Wasserzeichen als PageSegment auf diese Seite aufgebracht. Anschließend wird die Seite mit dem neuen PageSegment in ein BufferedImage gerendert und in einem JFrame dargestellt.

WatermarkExample.java
Wasserzeichen im Layer PREDECORATION
Wasserzeichen im Layer POSTDECORATION

Verkleinern der ursprünglichen Seite um zusätzliche Informationen aufzubringen

In diesem Beispiel wird auf einer Seite der Inhalt einer eingelesenen Seite mit neuen Inhalten aus einem ContentsCreatorPageSegment kombiniert um eine Kopfzeile zu erzeugen die keine Seiteninhalte verdeckt. Dazu wird ein CompositePageSegment verwendet, in dem die verschiedenen PageSegments miteinander kombiniert werden können. 

Zunächst werden die PageSegments einer eingelesenen Seite skaliert und in ein CompositePageSegment eingefügt. Anschließend wird ein Rahmen darum gezeichnet (Methode createPageSegmentWithScaledPage()).

Danach wird ein ContentsCreatorPageSegment definiert, das den verbleibenden Platz oberhalb der skalierten Seite einnimmt. In diese Kopfzeile werden verschiedene Informationen eingefügt (Methode createHeadlinePageSegment()).

Diese beiden PageSegmente werden anschließend auf der neu erstellten Zielseite eingefügt.

 

Icon

Durch Ausführen der main()-Methode wird die angeforderte Seite aus der gegebenen Datei gelesen und zusammen mit einem ContentsCreatorPageSegment in ein CompositePageSegment eingefügt. Anschließend wird die so erzeugte Seite in ein BufferedImage gerendert und in einem JFrame dargestellt.

CompositeExample.java

Skalierte Seite mit Kopfzeilen