Drucken mit Javascript

Programmierter Ausdruck von Webseiten

Auf dieser Webseite geht es nicht um den Ausdruck von Standard-Webseiten, sondern um Webseiten, die speziell für die Druck-Ausgabe formatiert wurden. Da solche Seiten keine Menüs, Erklärungen, Buttons, etc. enthalten, müssen sie automatisch oder ferngesteuert ausgedruckt werden. Javascript bietet die Funktionen zum Ausdruck von Webseiten.
Hier werden 2 Modelle und deren Programmierung vorgestellt.
print Der Druckbefehl von Javascript
Auto-Print Eine Webseite mit BesucherInnen-Führung steuert den Ausfdruck einer Print-Seite
Print-Fernsteuerung Eine Webseite mit BesucherInnen-Führung steuert den Ausfdruck einer Print-Seite

Drucken mit dem print - Befehl

Javascript bietet den Befehl print()
So können sie den Befehl z.B. mittels Button anwenden.
<button name="PrintMe" type="button" onclick="window.print()'">
Ausdruck
</button>
Hier wird der gleiche Befehl mit einem Druck-Icon ausgelöst.
Ausdruck
<a href="javascript:window.print()" target="_self">
<img src="printbutton.png" alt="Ausdruck" />
</a>

Auto - Print

Der automatische Ausdruck erfolgt durch einfaches Öffnen der Druck-Webseite: Sie druckt sich selbst und schließt sich dann wieder.
Die Druckseite enthält selbst das Script, kann daher von jeder anderen Seite aus gestartet werden.
Es gibt mehrere Möglichkeiten, eine Seite automatisch zu laden, zu drucken und wieder zu schließen:

Am einfachsten nutzen sie das onload-Ereignis (event), das nach dem Laden eines Elements (sinnvoll: <body> ) ausgelöst wird.

Der Code (rechts) befindet sich auf der jener Seite, die gedruckt werden soll !
<head>
...
<script type="text/javascript">
function print_me() {
window.print();
window.close();
}
</script>
</head>
<body onload="print_me()">
...
</body>
Mit diesem oder einem ähnlichen Code wird die Auto-Druckseite gestartet: Ein gewöhnlicher Link genügt.

Dieser Code muss sich daher auf einer anderen Webseite befinden !

Öffnen sie Ausdruck-Seiten immer in einem eigenen Fenster. ( target="_blank" ).
Bei Rahmen-(frame)-Seiten ist das unbedingt notwendig, denn sonst werden auch die Navigations-Fenster mitgedruckt.
<a href="autoprint.htm" target="_blank">
Ausdruck
</a>

Print - Fernsteuerung

Die Fernsteuerung erfolgt von einer normalen Webseite mit BesucherInnen-Führung: Die Druckseite wird geöffnet, gedruckt und wieder geschlossen. Die Druckseite selbst enthält keine Scripts, kann daher nur von einer Fernsteuerungs-Seite aus gedruckt werden.
So steuern sie die Ausdruck-Seite von einer anderen Bildschirm-Seite:
(Die eigentliche Druckseite enthält kein JS-Programm.)

Mit open() wird die Druckseite in einem neuen Fenster geöffnet. Die Funktion gibt eine Variable zurück (hier: druck ), welche anschließend für alle Operationen mit dieser Seite eingesetzt wird.
Der folgende Druck-Befehl wirkt auf die geöffnete Druckseite.
Zuletzt wird die Druckseite wieder geschlossen.

Die Funktion focus() bringt wahlweise die steuernde Seite (self) oder die Druckseite (druck) in den Vordergrund.
function test() {
druck = window.open("test1.htm","Druck");
// self.focus();
druck.print();
druck.close();
}

Sie bestimmen durch Programmierung den Ablauf:
Sie können die 3 Befehle direkt hintereinander ausführen, oder dazwischen andere Aktionen setzen (Prüfung, Dialog, ...)
Live-window.open-Javascript: druck=window.open()
Live-focus()-Javascript: druck.focus()
Live-print()-Javascript: druck.print()
Live-close()-Javascript: druck.close()
Von der Steuer-Seite können sie auf alle Javascript-Objekte (globale Variable & Funktionen) der child-Seite zugreifen, umgekehrt ist das meist nur mit Tricks möglich.
PopUp-Stopper:
Gegen die ständige Belästigung durch unerwünschte Werbefenster (PopUps) wurden PopUp-Stopper entwickelt und in die meisten gängigen Browser integriert.

Die einfacheren dieser Programme begnügen sich damit, den Javacsript-Befehl open einfach abzuschalten - dann versagt die hier vorgestellte Methode zur Ausdruck-Steuerung !
Gute Programme bieten die Möglichkeit, den PopUp-Stopper für vertrauenswürdige Seiten (z.B. des eigenen Webservers) abzuschalten.