Variablen in einer Eigenschaft nutzen - Beispiel mit TrimBox
Ist die TrimBox zentriert, oder nicht?
Die oben gezeigte Datei verfügt über eine MediaBox und eine TrimBox. Unser Ziel ist es herauszufinden, ob die TrimBox bezüglich zur MediaBox zentriert ist. Dafür gibt es eine Eigenschaft namens „TrimBox ist in MediaBox zentriert“ in pdfToolbox, die in einer Prüfung genutzt werden kann.
Diese Eigenschaft prüft die Lage der TrimBox innerhalb der MediaBox; allerdings ohne jedwede Toleranz. Das bedeutet, dass die Prüfung nur dann zum Erfolg führt, wenn die TrimBox exakt zentriert ist und nicht um einen einzigen Pixel oder Punkt abweicht. Auch müssen die Abstände zwischen MediaBox und TrimBox in horizontaler und vertikaler Richtung identisch sein.
Mit JavaScript eine eigene Bedingung für zentrierte Lage definieren
Um eine zentrierte Lage zu erfüllen, muss der Abstand zwischen TrimBox und MediaBox bezüglich der linken und rechten Kante der Seite (und entsprechend zum oberen und unteren Rand) gleich sein. Zum Glück gibt es eine Eigenschaft in pdfToolbox, um den Abstand auf der linken Seite genannt „Horizontaler Versatz der TrimBox zur MediaBox“ zu prüfen.
Nun müssen wir diesen Wert zum Abstand zwischen den beiden Rahmen auf der rechten Seite vergleichen. Dafür nutzen wir eine JavaScript-Variable:
Eigenschaft == Distanz links
JavaScript Variable == Distanz rechts
Und für unsere Zwecke muss die „Distanz links“ gleich zur „Distanz rechts“ sein.
Wir legen eine neue Prüfung „TrimBox nicht in MediaBox zentriert“ an, die eine benutzerdefinierte Prüfung mit zwei Eigenschaften umfasst:
- „Horizontaler Versatz der TrimBox zur MediaBox“ (um den Abstand auf der linken Seite zu prüfen) und eine JavaScript-Variable innerhalb dieser Eigenschaft, um den Abstand auf der rechen Seite damit zu vergleichen (hier „ungleich“).
- „Vertikaler Versatz der TrimBox zur MediaBox“ (um den Abstand oben zu prüfen) und eine JavaScript-Variable innerhalb dieser Eigenschaft, um den Abstand nach unten damit zu vergleichen (hier „ungleich“).
Was steht im Script?
Das ist ganz einfach. Das vorliegende Script berechnet den Abstand zwischen der MediaBox und der TrimBox auf der rechten Seite. (Ein weiteres Script für den vertikalen Abstand wird hier nicht gezeigt, hat aber dieselbe Grundlage.)
Hinweis: Dieses Profil funktioniert bestens bei Dateien mit einer Seite oder einer Datei, die denselben Abstand der beiden Rahmen rechts auf der ersten Seite und links auf allen Seiten hat.
Sie können gut sehen, dass das Script dem Wert für die rechte Seite nur von der ersten Seite übernimmt. Vergleichen Sie hier: app.doc.pages[0]
(in JavaScript ist die Seite "0" die erste Seite)
Falls die Seiten in Ihrer Datei unterschiedliche Abmessungen für die MediaBox aufweist, müsste das Script etwas aufwändiger sein.
Mehrseitige Dateien oder Dateien mit verschiedenen Abmessungen der Rahmen auf diversen Seiten
Das Problem mit dem oben genannten Script ist, dass die JavaScript-Variable den Abstand der zwei Boxen rechts auf der ersten Seite des Dokuments berechnet und diesen mit dem linken Abstand auf allen Seiten vergleicht.
Wir wollen nun erreichen, dass der Abstand zwischen der TrimBox und der MediaBox rechts für jede Seite einzeln berechnet wird (daher die JavaScript-Variable). Die Lösung kann über einen Prozessplan erzielt werden, der alle Seiten abarbeitet und rechts und links (ebenso wie oben und unten) für jede Seite einzeln vergleicht. (Links auf Seite 1 mit links auf Seite 2 und so weiter.)
Der Prozessplan mit Schleifen umfasst 4 Sequenzen:
- Eine Variable die prüft, dass die Seite, die wir uns ansehen die Seite 1 ist.
- Eine Prüfung auf der aktuellen Seite für den horizontalen Versatz (um den Abstand zwischen den Rahmen auf der rechten Seite für jede Seite einzeln zu berechnen); siehe Abbildung unten.
- Eine Prüfung auf der aktuellen Seite für den vertikalen Versatz (um den Abstand zwischen den Rahmen oberhalb für jede Seite einzeln zu berechnen).
- Eine Variable, um die Seitenzahl ab Schritt 2 um 1 zu erhöhen (falls die Seitenzahl niedriger als oder gleich der letzten Seite ist) oder um die Schleife mit der letzten Seite zu beenden.
Die oben stehende Abbildung zeigt die Prüfung für den zweiten Punkt im oben stehenden Prozessplan (die Prüfung für Punkt 3 ist vergleichbar und wird deshalb hier nicht gezeigt).
Die oben gezeigte Prüfung umfasst zwei Scripts (unten mit Nummerierung zu sehen).