Einfache Möglichkeiten in Oracle Application Express (APEX) Seiten zu drucken
Eine immer wiederkehrende Aufgabe bei der Erstellung einer APEX Anwendung ist es, die Seiten in ein für den Ausdruck optimiertes Erscheinungsbild zu bringen. Sicherlich gibt es für diese Aufgabe verschiedene Möglichkeiten. Ich möchte in diesem Beitrag eine einfache Möglichkeiten zeigen, wie diese Aufgabe für viele Anwendungsfälle erledigt werden kann.
Der beschriebene Möglichkeit liegt eine einfache Idee zu Grunde. Wenn eine Seite gedruckt werden soll, werden alle störenden Elemente wie das Navigation Menü, die Kopf- und Fußzeile und die Schaltflächen ausgeblendet.

Dynamic Action
In APEX lassen sich Komponenten einfach ausblenden. Sie können das z.B. über eine Condition erledigen. Eine andere Variante möchte ich Ihnen jetzt vorstellen. Sie können für diese Aufgabe eine Dynamic Action nutzen.

Hierzu wird zuerst ein Button in der Seite benötigt. Wenn Sie diesen hinzugefügt habe, klicken Sie mit der rechten Maustaste im Application Builder auf den Eintrag des Buttons in der Seitenstruktur und legen für die Schaltfläche eine neue Dynamic Action an.

Eine Dynamic Action wird auf Client-Seite im Browser ausgeführt. Hinter ihr verbergen sich JavaScript-Events. In diesem Fall nutzen Sie das OnClick-Event. Das jeweilige Ereignis finden Sie in der Wenn (When) – Sektion. (Ich hatte (leider) bei der Erstellung des Screen-Shots die Entwicklungsumgebung auf Deutsch eingestellt. )
Jede Dynamic Action bringt einen True- und einen False-Zweig mit. Sie können also noch eine Bedingung (Condition) hinterlegen, über die Sie steuern können, wann welcher dieser Zweige ausgeführt werden soll. In diesem Fall bedarf es keiner weiteren Einschränkungen. Im True – Zweig werden nun drei Einträge vom Typ JavaScript Expression (JavaScript-Code Ausführen) angelegt.

In dem Ersten Abschnitt tragen Sie nun diesen Quellcode ein.
if ($("body").hasClass("js-navExpanded")) {
$("#t_Button_navControl").click();
};
setTimeout(3000);
$("#t_Header").hide();
$("#t_Body_nav").hide();
$("#t_Body_title").hide();
$("#t_Body_content_offset").hide();
$(".t-Button").hide();
$(".t-Footer").hide();
Dieser Code ist recht einfach. Zuerst wird das Menü eingeklappt . Nach einer kurzen Pause, werden der Header, die NavBar, der BodyTitle, alle Schaltflächen und auch der Footer ausgeblendet.
Mit window.print(); wird nun im nächsten Java-Schnipsel der Druck-Dialog des Browsers geöffnet.
Der letzte JavaScript-Teil blendet nach dem Drucken wieder alle versteckten Seitenbestandteile ein.
$("#t_Header").show();
$("#t_Body_nav").show();
$("#t_Body_title").show();
$("#t_Body_content_offset").show();
$(".t-Button").show();
$(".t-Footer").show();
$("#t_Button_navControl").click();
Die Aufteilung in drei eigenständige JavaScript Blöcke sorgt dafür, dass diese synchron – also nacheinander – ausgeführt werden und auf den vorherigen Block warten.
Sie sollten darauf achten, dass Sie die Eigenschaft “Execute On Page Load” der JavaScript-Sektionen auf false setzen.

Die Druckvoransicht können Sie sich in Abbildung 06 exemplarisch für die “Sample Database Application” ansehen.

Sicherlich genügt diese Lösung nicht allen Anforderungen. Sie bietet aber eine einfache und schnell zu realisierende Möglichkeit, eine Seite für den Ausdruck zu optimieren.