6.2 Aktionen zum Drucken
02_Programmierung\Aktionen\drucken
Bereits seit Version 4 druckt Flash z.B. Wegbeschreibungen, Rechnungen, Bestellscheine, Grußkarten und Produktinformationen aus einer Anwendung. Um genau zu sein, geht das erst mit den Flash Playern, die seit dem 16. Dezember 1999 zum Download bereitstehen und die Release-Nummer 20 oder größer tragen (siehe Kapitel 19, »Flashdetection«). Im Gegensatz zu den sehr unflexiblen Druckmöglichkeiten direkt aus dem Browser oder über JavaScript (window.print()) erfolgt der Ausdruck verschiedenster Dokumente in hoher Qualität und individuell gesteuert.
Die gesamte Druckfunktionalität wurde von Macromedia im Flash Player untergebracht, so dass auch ältere Flash-Anwendungen ohne Änderung von dieser Erweiterung profitieren. Im Kontextmenü einer Flash-Anwendung (rechte Maustaste unter Windows oder (Ctrl) + Maustaste auf Macintosh-Computern) wird bei dem aktuellen Plug-in der Punkt Drucken angezeigt, über den sich jedes Bild des Films ausgeben lässt. Alphakanäle (Transparenzen) werden hier jedoch ignoriert.
Hier klicken, um das Bild zu Vergrößern
Abbildung 6.1
Kontextmenü des Flash Players mit dem Befehl Drucken (hier der Flash Player 6)
Auch direkt aus einer Flash-Anwendung lässt sich drucken, indem die Aktion getURL (Flash 4) mit der Angabe des Parameters print: innerhalb der URL oder die Aktion print (seit Flash 5) verwendet wird. Falls Sie Alphakanäle einsetzen, sollte das Dokument als Bitmap ausgegeben werden (printAsBitmap). Sonst werden die Transparenzen bei der Ausgabe ignoriert. Flash bietet zahlreiche Möglichkeiten, um das zu druckende Dokument zu gestalten. Die ganze Anwendung oder einzelne Movieclips lassen sich ausgeben, und die zu druckenden Bilder und die zu druckenden Bereiche können frei festgelegt werden.
Seit wann kann Flash drucken?
Die Druckfunktion steht für alle Flash Player seit Release 4.0.20 zur Verfügung. Seit Flash 5 lassen sich aus einem Stand-alone-Projektor ebenfalls Dokumente auf einem Drucker ausgeben.
Flash-Versionen
Je nachdem, mit welcher Flash-Version Sie arbeiten, benötigen Sie zum Drucken eine der folgenden Aktionen:
|
getURL mit der URL print:, um den Inhalt der Flash-Anwendung als Vektorzeichnung zu drucken (Transparenzen gehen verloren). Diese Aktion funktioniert seit Flash 4. |
|
getURL mit der URL printAsBitmap:, um den Inhalt der Flash-Anwendung als Bitmap zu drucken (Transparenzen bleiben erhalten, es wird aber mehr Arbeitsspeicher benötigt). Diese Aktion funktioniert seit Flash 4. |
|
Die Aktion print ist erst seit Flash 5 möglich. Für diesen Befehl geben Sie direkt an, ob Sie die Anwendung als Vektorzeichnung ohne Transparenzen (print) oder als Bitmap (printAsBitmap) ausgeben möchten. |
Falls Sie nicht die gesamte Anwendung, sondern nur einen Movieclip drucken möchten, dann geben Sie bei der getURL-Variante als zweiten Parameter den Instanznamen des Movieclips an. Bei der Aktion print wählen Sie für die Position entweder eine Stufe oder einen Movieclip als Ziel.
Num oder nicht Num
Alle Aktionen, bei denen Sie ein Ziel angeben können, lassen sich auf zwei Arten verwenden und werden dann unterschiedlich geschrieben: einmal mit Num und einmal ohne Num. Das Num bedeutet, dass Sie als Ziel keinen Movieclip, sondern eine Stufe (engl. Level) angeben. Alternativ können Sie z.B. zum Drucken anstatt printAsBitmapNum (0, "bmovie"); auch die Aktion printAsBitmap ("_level0", "bmovie"); verwenden. Die Aktion printAsBitmap ("0", "bmovie"); hingegen sucht nach einem Movieclip mit der Bezeichnung »0«. Folgende Aktionen sind von diesem Verhalten betroffen:
|
print |
|
printAsBitmap |
|
loadMovie |
|
loadVariables |
|
unloadMovie |
6.2.1 Drucken verhindern
Normalerweise druckt Flash alle Bilder einer Zeitleiste oder bietet zumindest alle Bilder im Drucken-Dialogfenster zur Ausgabe an. Sie können die Ausgabe aber auf spezielle Bilder beschränken oder ganz verhindern. Alles, was Sie dafür tun müssen, ist:
|
Verwenden Sie irgendwo in der Zeitleiste die Bildbezeichnung »!#p« (Eigenschafteninspektor bei markiertem Schlüsselbild), um das Drucken der Anwendung oder des Movieclips über das Kontextmenü zu verhindern. Die Ausgabe mit Hilfe der Aktionen ist weiterhin möglich. |
|
Platzieren Sie in allen Bildern, die gedruckt werden sollen, die Bildbezeichnung »#p«. Alle Bilder ohne diese Bildbezeichnung werden nicht mehr zur Ausgabe angeboten. Dies gilt sowohl für das Kontextmenü Drucken als auch für die entsprechenden Aktionen (z.B. print). |
|
Wenn Sie weder »!#p« noch »#p« verwenden, wird die gesamte Zeitleiste zum Druck angeboten, falls Sie die entsprechenden Aktionen verwenden oder der Betrachter im Kontextmenü den Punkt Drucken wählt. Dies gilt auch für Anwendungen, die vor der Einführung der Druckfunktion erstellt wurden. |
6.2.2 Ausgabegröße
Sie bestimmen nicht nur, welche Bilder ausgegeben werden, sondern auch in welcher Größe diese Ausgabe erfolgt. Dafür stehen vier Einstellungen bei der Aktion print zur Verfügung, die in ähnlicher Form auch bei der Flash 4-Variante mit getURL eingesetzt werden können:
|
Begrenzungsbox »Film« (bmovie): In diesem Fall wird jedes Bild im Verhältnis zum Dokument (Bühne) gedruckt. Dies entspricht den Aktionen getURL ("print:"); und getURL ("printAsBitmap:"); in Flash 4. |
|
Begrenzungsbox »Bild« (bframe): Bei dieser Einstellung wird der Inhalt jedes Bildes so groß wie möglich ausgegeben. Dies entspricht den Aktionen getURL ("print:#bframe"); und getURL ("printAsBitmap:#bframe"); in Flash 4. |
|
Begrenzungsbox »Max.« (bmax): Bei dieser Einstellung ermittelt Flash die maximale Größer aller zu druckenden Bilder. Diese werden dann so groß wie möglich ausgegeben, wobei die Proportionen und das Verhältnis zueinander gewahrt bleiben. Dies entspricht den Aktionen getURL ("print:#bmax"); und getURL ("printAsBitmap:#bmax"); in Flash 4. |
|
Durch die Bildbezeichnung »#b« kombiniert mit der Begrenzungsbox »Film« (bmovie) geben Sie in Flash 4, Flash 5 und Flash MX an, welcher Bereich so groß wie möglich ausgegeben werden soll. Sie können diese Bildbezeichnung nur einmal in einer Zeitleiste verwenden. In diesem Bild erstellen Sie dann einen Kasten, der als Begrenzungsrechteck (engl. Boundingbox) dient. Dies verhält sich ähnlich wie die Begrenzungsbox »Max.« (bmax), bei der Flash dieses Begrenzungsrechteck automatisch für jedes einzelne Bild ermittelt. Sehr hilfreich ist in beiden Fällen der Zwiebelschichteneffekt, über den die Anordnung der Objekte und des Begrenzungsrechtecks komfortabel durchgeführt wird. |
Drucken eines Dokumentes
02_Programmierung\Aktionen\drucken
Erstellen Sie für Ihre zu druckenden Daten einen Movieclip. In diesem »Container« montieren Sie in den nächsten Schritten das zu druckende Dokument.
2. |
Druckbereich festlegen |
|
|
Platzieren Sie in einem Bild des Movieclips (in der Regel das erste Bild) ein Rechteck, das dem zu bedruckenden Medium entspricht. Üblicherweise handelt es sich hierbei um ein A4-Blatt, weshalb sich ein Rechteck mit einem vergleichbaren Seitenverhältnis anbietet. Setzen Sie nun die Bildmarkierung für dieses Bild auf »#b«, da Flash erst ab diesem Moment das Rechteck als »Größenvorgabe« berücksichtigt!
Montieren Sie die Inhalte nun Seite für Seite in aufeinander folgenden Bildern des Movieclips. Der Zwiebelschichteneffekt ist hier sehr nützlich, da sich so die »Größenvorgabe« transparent im Hintergrund betrachten lässt. Geben Sie außerdem allen Bildern mit Inhalten die Bildbezeichnung »#p«. Nur diese mit »#p« bezeichneten Bilder werden gedruckt! Beim Veröffentlichen gibt Flash eine Fehlermeldung aus, wenn mehrere Bildbezeichnungen den gleichen Namen tragen (in diesem Fall #p). Diese Meldung können Sie aber getrost ignorieren.
Ihr Movieclip beinhaltet jetzt alle für den Druck notwendigen Daten. Damit Ihre Flash-Anwendung den Movieclip druckt, muss der Movieclip im der Anwendung vorhanden und mit einem eindeutigen Instanznamen versehen sein, Diesen Instanznamen vergeben Sie im Eigenschafteninspektor (beispielsweise mc_print)!
Aus kosmetischen Gründen könnten Sie außerdem noch für den Movieclip festlegen, dass er nicht abspielen und unsichtbar sein soll:
mc_print.stop();
mc_print._visible=false;
5. |
Schaltfläche mit Druckfunktion erstellen |
|
|
Geben Sie dem Anwender die interaktive Möglichkeit, das Drucken zu starten. Verwenden Sie dafür eine Schaltfläche. Weisen Sie diesem Element nun einen Instanznamen zu. Platzieren Sie anschließend ein Skript für die print-Aktion in das erste Schlüsselbild der Zeitleiste. Die print-Aktion benötigt als Parameter den Instanznamen des zu druckenden MovieClips und den Druckbereich:
btn_print.onRelease = function () {
print("_root.mc_print", "bmovie");
};
Mehrseitige Dokumente drucken
Mit Flash MX 2004 hat Macromedia die PrintJob-Klasse eingeführt, die es erlaubt, mehrseitige Dokumente komfortabel für den Druck ab dem Flash Player 7 aufzubereiten. Sofern es die Zielgruppe Ihrer Anwendung zulässt, sollten Sie dieses Objekt anstelle der print-Aktionen einsetzen.
Movieclip zum Drucken laden
Falls Sie einen Movieclip drucken möchten, der extra zu diesem Zweck eingelesen wird (loadMovie), dann funktioniert das Drucken nur, wenn der Movieclip komplett geladen ist. Dies überprüfen Sie, indem sichergestellt wird, dass die Eigenschaft _totalframes größer als null (sonst existiert dieser Movieclip nicht) und _framesloaded gleich _totalframes ist:
btn_print.onRelease = function()
{
var totalframes;
var framesloaded;
if (isNaN(container._totalframes))
{
// nichts geladen
}
else
{
// überprüfe, ob vollständig geladen
totalframes = container._totalframes;
framesloaded = container._framesloaded;
if (totalframes>0 && totalframes == framesloaded)
{
printAsBitmap("container", "bmovie");
}
}
};
Für den Fall, dass die Zeitleiste (Ziel oder Stufe) nicht existiert, wird der Inhalt der Eigenschaft _totalframes vorsichtshalber mit der Funktion isNaN überprüft. Dies führt dazu, dass Flash erkennt, dass der Movieclip noch undefiniert ist.
6.2.3 print
Die Aktion print druckt den Inhalt einer Anwendung oder eines Movieclips vektororientiert aus.
|
Bemerkung: |
|
Diese Aktion steht seit dem Flash Player 4.20 zur Verfügung (als Entwicklungsumgebung wird Flash 5 oder neuer benötigt). Alternativ kann die Aktion getURL (auch bereits in Flash 4) oder die Methode getURL des Movieclip-Objektes eingesetzt werden. Da diese Alternativen jedoch keinen Vorteil bieten, sind sie aufgrund der schlechteren Lesbarkeit nicht zu empfehlen. |
|
|
|
Pixelgrafiken, Transparenz- und Farbeffekte werden bei dieser Druckmethode ignoriert. |
|
|
|
Syntax: |
print("ziel");
print("ziel", "begrenzungsbox");
|
Parameter: |
|
Der erste Parameter legt fest, welche Zeitleiste (also welcher Movieclip) gedruckt wird. Der optionale zweite Parameter bestimmt, wie gedruckt wird. Zur Verfügung stehen bmovie (Dokumentgröße), bframe (maximale Größe jedes einzelnen Bildes) und bmax (maximale gemeinsame Größe aller Bilder). Weitere Informationen zur Größeneinstellung erhalten Sie unter »Ausgabegröße«. |
|
|
|
Beispiel: |
// Drucke Movieclip
meinButton.onRelease = function() {
print("_root.mcDruck", "bmovie");
};
// Alternative Methode seit Flash 5
meinButton.onRelease = function() {
movieClipInstanz.getURl("print:#bmovie", "_root.mcDruck");
};
6.2.4 printNum
Die Aktion printNum druckt den Inhalt einer Flash-Datei in einer anderen Stufe (engl. Level) vektororientiert aus.
|
Bemerkung: |
|
Diese Aktion steht seit dem Flash Player 4.20 zur Verfügung (als Entwicklungsumgebung wird Flash 5 oder neuer benötigt). Alternativ kann getURL oder die Methode getURL des Movieclip-Objektes eingesetzt werden. Da diese Alternativen jedoch keinen Vorteil bieten, sind sie aufgrund der schlechteren Lesbarkeit nicht zu empfehlen. Pixelgrafiken, Transparenz- und Farbeffekte werden bei dieser Druckmethode ignoriert. |
|
|
|
Syntax: |
printNum(stufe);
printNum(stufe, "begrenzungsbox");
|
Parameter: |
|
Der erste Parameter legt fest, welche Stufe (engl. Level) gedruckt wird. Der optionale zweite Parameter bestimmt, wie gedruckt wird. Zur Verfügung stehen bmovie (Dokumentgröße), bframe (maximale Größe jedes einzelnen Bildes) und bmax (maximale gemeinsame Größe aller Bilder). Weitere Informationen zur Größeneinstellung erhalten Sie unter »Ausgabegröße« auf Seite 139. |
|
|
|
Beispiel: |
// Drucke Stufe
meinButton.onRelease = function() {
printNum(0 , "bmovie");
};
// Alternative Methode seit Flash 5
meinButton.onRelease = function() {
movieClipInstanz.getURl("print:#bmovie", "_level0");
};
6.2.5 printAsBitmap
Die Aktion printAsBitmap druckt den Inhalt eines Movieclips pixelorientiert aus.
|
Bemerkung: |
|
Diese Aktion steht seit dem Flash Player 4.20 zur Verfügung (als Entwicklungsumgebung wird Flash 5 oder neuer benötigt). Alternativ kann getURL oder die Methode getURL des Movieclip-Objektes eingesetzt werden. |
|
|
|
Pixelgrafiken, Transparenz- und Farbeffekte werden bei dieser Druckmethode berücksichtigt. Diese Methode erfordert jedoch mehr Arbeitsspeicher als die vektororientierten Varianten print und printNum. |
|
|
|
Syntax: |
printAsBitmap("ziel");
printAsBitmap("ziel", "begrenzungsbox");
|
Parameter: |
|
Der erste Parameter legt fest, welche Zeitleiste (also welcher Movieclip) gedruckt wird. Der optionale zweite Parameter bestimmt, wie gedruckt wird. Zur Verfügung stehen bmovie (Dokumentgröße), bframe (maximale Größe jedes einzelnen Bildes) und bmax (maximale gemeinsame Größe aller Bilder). Weitere Informationen zur Größeneinstellung erhalten Sie unter »Ausgabegröße« auf Seite 139. |
|
|
|
Beispiel: |
// Drucke Movieclip
btn_print.onRelease = function() {
printAsBitmap("_root.mc_print", "bmovie");
};
// Alternative Methode seit Flash 5
btn_print.onRelease = function() {
this.getURl("printAsBitmap:#bmovie", "_root.mc_print");
};
6.2.6 printAsBitmapNum
Die Aktion printAsBitmapNum druckt den Inhalt einer Flash-Datei in einer Stufe (engl. Level) pixelorientiert aus.
|
Bemerkung: |
|
Diese Aktion steht seit dem Flash Player 4.20 zur Verfügung (als Entwicklungsumgebung wird Flash 5 oder neuer benötigt). Alternativ kann getURL oder die Methode getURL des Movieclip-Objektes eingesetzt werden. |
|
|
|
Pixelgrafiken, Transparenz- und Farbeffekte werden bei dieser Druckmethode berücksichtigt. Diese Methode erfordert jedoch mehr Arbeitsspeicher als die vektororientierten Varianten print und printNum. |
|
|
|
Syntax: |
printAsBitmapNum(stufe);
printAsBitmapNum(stufe, "begrenzungsbox");
|
Parameter: |
|
Der erste Parameter legt fest, welche Stufe (engl. Level) gedruckt wird. Der optionale zweite Parameter bestimmt, wie gedruckt wird. Zur Verfügung stehen bmovie (Dokumentgröße), bframe (maximale Größe jedes einzelnen Bildes) und bmax (maximale gemeinsame Größe aller Bilder). Weitere Informationen zur Größeneinstellung erhalten Sie unter »Ausgabegröße« auf Seite 139. |
|
|
|
Beispiel: |
// Drucke Stufe
meinButton.onRelease = function() {
printAsBitmapNum(0 , "bmovie");
};
// Alternative Methode seit Flash 5
meinButton.onRelease = function() {
movieClipInstanz.getURl("printAsBitmap:#bmovie", "_level0");
};
|