Beliebige Inhalte platzieren: Positionierung der Inhalte
Platzierung über Korrektur-Parameter oder über HTML-Größe in Bezug zur PDF-Größe
Die Positionierung der platzierten HTML-Elemente lässt sich auf zwei Wegen beeinflussen:
- Über die Eingaben im Dialog „Diese Korrektur bearbeiten“
- Direkt in dem HTML-Template oder in referenzierten CSS- oder JavaScript-Dateien
Positionierung von Inhalten anhand des Referenzpunktes
Eigentlich verwenden PDF und HTML Koordinatensysteme, die sich im Ursprung der X-Y-Achse grundlegend unterscheiden.
Während PDF ein Koordinatensystem mit Ursprung links unten verwendet, legt HTML für den Ursprung einen Punkt links oben fest. pdfToolbox gleicht diesen Unterschied aus.
Wichtig: Das in dem Fixup effektive Koordinatensystem der PDF-Seite wird durch die Einstellung des Referenzpunkts in "Relativ zu" definiert. Wenn hier also "Obere linke Ecke" gewählt wird, ist der Ursprung beider Koordinatensysteme identisch. Nur dann funktioniert die Positionierung in der Regel "intuitiv" richtig.
In allen anderen Fällen ist es von Bedeutung, sich über die grundlegende Positionierung im Klaren zu sein:
pdfToolbox ermittelt zunächst anhand der Angaben im Fixup den Positionspunkt auf der Seite.
Auf diesen Punkt wird die dem Referenzpunkt entsprechende Ecke des HTML-Objektes gelegt.
Beispiel: Wird der Referenzpunkt in "Relativ zu" auf die "Obere rechte Ecke" gelegt, der Horizontale Versatz auf -20 mm und der Vertikale Versatz auf -100 mm, so ergibt sich dadurch, dass der Positionspunkt 20 mm links und 100 mm unterhalb der rechten oberen Ecke der PDF Seite liegt. Auf diesen Punkt wird nun die obere rechte Ecke des HTML Objektes gelegt.
Noch komplizierter wird die Sache, wenn wir das HTML Objekt im Fixup über eine Eingabe in "Drehung (Grad)" drehen. Hier wird das HTML Objekt vor der Platzierung gedreht. Dann wird ein virtuelles Rechteck mit Kanten parallel zum Koordinatensystem erzeugt. Dieses virtuelle Rechteck ist dann bei allen Drehungen ungleich 90°, 180°, 270° (bzw. deren negative Pendants) größer als das ungedrehte Objekt selbst. Dieses virtuelle Rechteck wird entsprechend der eben aufgezeigten Regeln platziert.
Bei der Positionierung des HTML-Objektes wird also nicht der Ursprung des HTML-Koordinatensystems verwendet, sondern die dem in dem Fixup definierten Referenzpunkt entsprechende Ecke oder Kante.
Der Größe des HTML-Objektes kommt also bei der Positionierung eine ganz entscheidende Rolle zu.
Interne Seitengröße: Default DIN A4
Es ist möglich dem HTML Objekt im CSS eine definierte Größe mitzugeben (in der @page rule) und das ist – wenn der Referenzpunkt nicht die obere linke Ecke ist – auch empfehlenswert. Wenn diese Angabe fehlt, ist die Default-Größe DIN A4.
Das bedeutet, dass pdfToolbox – wenn nicht anders angegeben – das generierte PDF in DIN-A4-Größe auf die zu korrigierende PDF-Datei platziert.
(Dies kann etwa dann zu irritierenden, aber logischen Ergebnissen führen, wenn man etwa eine beliebige Textzeile über die index.html auf ein DIN-A4-PDF platziert. Verschiedene Platzierungsoptionen (unten links, Mitte, etc.), die man über den pdfToolbox-Dialog erreichen will, scheinen dann nicht wie erwartet zu funktionieren. Das liegt daran, dass nicht nur die Textzeile platziert wird, sondern die Textzeile innerhalb eines automatisch generierten A4-Seitenformats.).
Eigene Seiten-Formate für zu Platzierende Inhalte müssen über CSS angelegt werden.
Das bedeutet auch, dass ein HTML-Objekt ohne besondere Vorkehrungen immer eine Größe hat, die nicht durch die in ihm definierten Inhalte bestimmt wird. Eine Platzierung eines Quadrates relativ zur unteren linken Ecke kann nur dann exakt an dessen unterer Kante erfolgen, wenn die Lage dieser Kante zuvor ausgerechnet und entweder in dem HTML oder im Fixup bei der Positionierung berücksichtigt wird.
Mehrere HTML "Seiten" platzieren
Bei der Verarbeitung des HTML Templates kann mehr als eine Seite entstehen, wenn die Ausmaße der Objekte über das definierte oder per Default auf DIN A4 gesetzte Format hinaus gehen. pdfToolbox platziert dann die erste Seite des HTML Templates auf die erste Seite, dann die zweite u.s.w. bis alle Seiten des HTML Templates verarbeitet sind. Danach beginnt die Verarbeitung wieder bei der ersten Seite des HTML Templates so lange bis alle Seiten des PDFs belegt sind.
Es ist also durchaus möglich, mit einem Template auf jede Seite eines PDFs unterschiedliche Inhalte auzubringen.
Alternativer Positionieransatz
Wie im vorigen Abschnitt gezeigt, kann es durchaus kompliziert sein, die gewünschte Position für ein in HTML definiertes Objekt vorzugeben. In sehr vielen Fällen ist es daher sinnvoll, in HTML eine Seite zu erzeugen, die den Ausmaßen der PDF Seite entspricht. Dieses Beispiel im Header einer HTML Datei würde eine DIN A3 "Seite" im Querformat erzeugen:
<style>
@page {
size:420mm 297mm;
}
</style>
Innerhalb dieser HTML-Seite kann dann mit den Methoden von HTML und vor allem CSS positioniert werden. Anschließend wird diese Seite auf die linke obere Ecke ohne Versatz platziert.