Oracle Application Express (APEX) drucken

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.

Abbildung 01: Störende Elemente

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.

Abbildung 02: Print-Button

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.

Abbildung 03: Neue Dynamic Action

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.

Abbildung 04: True-Zweig

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.

Abbildung 05: Nicht beim Laden der Seite ausführen.

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

Abbildung 06: Druckvoransicht

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.