Die Ausgangslage
Einer unserer Kunden führte den SWING PDF Converter neu ein, um die Erzeugung von Ausdrucken in IBM Notes/Domino zu optimieren. Dabei stießen wir auf zwei unerwartete Stolpersteine.
Es geht bei beiden Problemen darum, dass in einer Brief-Maske eine Teilmaske eingebunden ist, die den Briefkopf enthält. Innerhalb der Maske gibt es dabei eine Tabelle (im Bild grün) und innerhalb dieser Tabelle wird die Teilmaske eingebunden (im Bild blau). Die Zeilen mit dem roten Text dienen nur der Dokumentation sind natürlich per Versteckformeln im Client ausgeblendet.
Betrachtet man das Dokument in Notes oder in der Druck-Vorschau, so wird alles korrekt dargestellt. SWING interpretiert einige Angaben aber offenbar anders als Notes.
Problem 1: SWING druckt die Teilmaske nicht
Druckte man das ursprüngliche Dokument mit SWING, so war der Inhalt der Teilmaske plötzlich verschwunden.
Der Grund des Problems: Es war reproduzierbar so, dass versteckte Zeilen Einfluss auf das Druckverhalten haben. Dabei ist die letzte Zeile innerhalb der Maske direkt vor der Teilmakse relevant, ebenso wie die erste Zeile innerhalb der Teilmaske selbst. Wenn nur eine der beiden Zeile per Versteckformel ausgeblendet wird, so wird die gesamte Teilmaske nicht von SWING gedruckt.
Die Lösung: Wie im Bild zu sehen haben wir in der Maske direkt vor der Teilmaske sowie innerhalb der Teilmaske ganz oben je eine stets sichtbare Zeile in Schriftgröße 1 ohne Text eingefügt. Sicherheitshalber wurde zudem in je einer versteckten Zeile ein Hinweistext eingefügt, um zukünftige Bearbeiter der Gestaltungselemente darüber in Kenntnis zu setzen, warum das Layout etwas "ungewöhnlich" ist.
Problem 2: In SWING verrutscht der Inhalt der Teilmaske nach rechts
Nachdem die Teilmaske nun also gedruckt wurde, wurde das nächste Problem sichtbar: Der Inhalt befand sich nicht linksbündig, sondern war ein ganzes Stück nach rechts eingerückt.
Der Grund des Problems: In neu erstellten Masken und Teilmasken ist es standardmäßig so, dass sich alles, was man an Text, Tabellen usw. erstellt, 2,54 cm (= 1 Zoll) vom linken Rand entfernt befindet. So lag diese Einstellung auch bei den untersuchten Gestaltungselementen vor. SWING sorgte dafür, dass die grüne Tabelle 2,54 cm eingerückt wurde. So weit, so richtig. Da die Teilmaske aber wie beschrieben in diese Tabelle eingefügt wurde, dachte sich SWING wohl: Ausgehend von diesen ersten 2,54 cm rücke ich den Inhalt der Teilmaske nochmal um 2,54 cm ein. Hier interpretieren Notes und SWING also das Einrücken unterschiedlich. Während Notes den Abstand vom linken Rand der gesamten Seite/der Maske berechnet, geht SWING vom linken Rand der Tabelle aus.
Die Lösung: Der Inhalt der Teilmaske muss 0 cm links vom Rand eingerückt sein. Dann interpretieren Notes und SWING das Einrückverhalten der Teilmaske identisch.
Während man Textinhalte relativ leicht über die oben gezeigte Box nach links verschieben kann, funktioniert dies bei Tabellen (meines Wissens) nicht über die grafische Benutzeroberfläche: Weder wenn man innerhalb der Tabelle einen anderen Abstand eingibt, noch per Copy und Paste in einen Bereich anderen Abstands ändert sich das Einrückverhalten. Möglich wird es, wenn man das Gestaltungselement als DXL öffnet. Dort kann man im <table>
-Knoten einfach das Attribut leftmargin='0'
hinzufügen und schon hat man das gewünschte Ergebnis.