Drucken zur Laufzeit



Drucken aus SWF-Dateien zur Laufzeit mit ActionScript 2.0

Sie können Ihren Flash-Dokumenten eine Druckfunktion hinzufügen, damit die Benutzer vom Flash Player aus drucken können. Sie können hierzu entweder die ActionScript®-Klasse „PrintJob“ oder die ActionScript-Funktionen „print()“ bzw. „printAsBitmap()“ verwenden. Die Benutzer können auch das Kontextmenü im Flash Player öffnen und den Befehl „Drucken“ wählen. Außerdem haben Benutzer, die den Flash Player nicht zum Drucken verwenden möchten, die Möglichkeit, vom Browser aus zu drucken, indem sie im Browserfenster den Befehl „Datei“ > „Drucken“ wählen. Das direkte Drucken über Flash Player bietet jedoch im Vergleich zum Drucken über das Druckmenü eines Browsers unter anderem folgende Vorteile:

  • Die Benutzer können alle Bilder bzw. bestimmte Bilder, die Sie als druckbar gekennzeichnet haben, von Flash Player aus drucken. Außerdem können Sie den Druckbereich eines Bilds festlegen.

  • Sie können angeben, ob der Inhalt zur Nutzung einer höheren Auflösung als Vektorgrafik oder zur Beibehaltung der Transparenz- und Farbeffekte als Bitmap ausgedruckt werden soll.

  • Das PrintJob-Objekt in ActionScript bietet den Funktionen „print()“ und „printAsBitmap()“ gegenüber eine weitere Verbesserung, indem es zusätzlich das Drucken dynamisch bereitgestellter Seiten als einzelne Druckaufträge ermöglicht. Mit dem PrintJob-Objekt können darüber hinaus die Druckereinstellungen der Benutzer zur individuellen Formatierung von Berichten verwendet werden.

  • Flash Player-Versionen vor 4.0.25 (Windows) bzw. 4.0.20 (Macintosh) unterstützen das direkte Drucken von Bildern nicht. Flash Player 7 und höhere Versionen unterstützen die PrintJob-Klasse.

Hinweis: Weitere Informationen zum Drucken von SWF-Dateien zur Laufzeit mithilfe von ActionScript 3.0 finden Sie unter Drucken im Handbuch „Programmieren mit ActionScript 3.0“.

Steuern der Druckmöglichkeiten zur Laufzeit

Beachten Sie beim Vorbereiten von Dokumenten und Movieclips auf den Druck die folgenden Richtlinien; dadurch können Sie die Druckmöglichkeiten für Benutzer steuern:

  • Passen Sie das Seitenlayout in allen als druckbar vorgesehenen Bildern an die gewünschte Druckausgabe an. Mit dem Flash Player können alle Formen, Symbole, Bitmaps, Textblöcke und Textfelder gedruckt werden. Stufen einer SWF-Datei werden in der Druckausgabe nicht zusammengesetzt.

  • Der Druckertreiber verwendet die Einstellungen für Größe, Skalierung und Ausrichtung in der Registerkarte „HTML“ des Dialogfelds „Einstellungen für Veröffentlichungen“. Verwenden Sie diese Einstellungen, um das Drucklayout zu steuern.

  • Die ausgewählten Bilder werden gedruckt, wenn sie im Movieclip-Symbol erscheinen. Benutzer können einen Movieclip drucken, der im Browser nicht sichtbar ist, indem Sie im Bedienfeld „Aktionen“ die Movieclip-Eigenschaft _visible auf false einstellen. Der Druckmodus eines Movieclips ändert sich nicht, wenn dessen Eigenschaften mit der Aktion setProperty, durch Tweening oder mit einem Transformationswerkzeug geändert werden.

  • Ein Movieclip ist nur dann druckbar, wenn er sich auf der Bühne oder im Arbeitsbereich befindet und einen Instanznamen besitzt.

  • Zum Drucken müssen alle Elemente vollständig geladen sein. Mit der Movieclip-Eigenschaft _framesloaded können Sie überprüfen, ob der druckbare Inhalt geladen ist. Weitere Informationen finden Sie im Abschnitt „_framesloaded (MovieClip._framesloaded-Eigenschaft)“ im ActionScript 2.0-Referenzhandbuch unter www.adobe.com/go/learn_fl_cs4_as2lr_de.

ActionScript 2.0-Klasse „PrintJob“ verwenden

Zusätzlich zur verbesserten Druckfunktionalität über die Methode print () ermöglicht die ActionScript-Klasse „PrintJob“ auch das Bereitstellen von dynamischem Inhalt zur Laufzeit, das Anzeigen eines Dialogfelds für einzelne Druckvorgänge für den Benutzer sowie das Drucken eines nicht skalierten Dokuments mit Proportionen, die den Proportionen des Inhalts entsprechen. Diese Funktion ist besonders zum Bereitstellen und Drucken von externem dynamischem Inhalt nützlich, z. B. aus Datenbanken und dynamischem Text.

Wenn Ihr Dokument zusätzlich Eigenschaften besitzt, die durch die Methode PrintJob.start() belegt werden, kann das Dokument die Druckereinstellungen des Benutzers, wie etwa Höhe, Breite und Ausrichtung der Seite lesen. Außerdem können Sie Ihr Dokument so konfigurieren, dass Flash-Inhalte dynamisch formatiert werden, damit sie für die Druckereinstellungen geeignet sind.

Hinweis: Die PrintJob-Klasse wird nur von Flash Player-Versionen ab Version 7 unterstützt.
Hinweis: Weitere Informationen zum Drucken von SWF-Dateien zur Laufzeit mithilfe von ActionScript 2.0 finden Sie im Handbuch ActionScript 2.0 in Adobe Flash - Arbeitshandbuch.

Druckaufträge erstellen

Da Sie zwischen Ihren Aufrufen der Methoden PrintJob.start() und PrintJob.send() einen Druckauftrag an das Betriebssystem des Benutzers weiterleiten (Spooling) und sich die PrintJob-Funktionen vorübergehend auf die interne Ansicht des Flash-Inhalts auf dem Bildschirm in Flash Player auswirken können, sollten Sie druckspezifische Aktivitäten nur zwischen den Aufrufen der Funktionen PrintJob.start() und PrintJob.send() ausführen. Flash-Inhalt sollte beispielsweise zwischen den Funktionen PrintJob.start() und PrintJob.send() nicht vom Benutzer beeinflusst werden. Sie sollten die Formatierung Ihres Druckauftrags stattdessen abschließen, dem Druckauftrag Seiten hinzufügen und ihn an den Drucker senden.

  1. Erstellen Sie mit folgender Funktion eine Instanz des PrintJob-Objekts: new PrintJob().
  2. Starten Sie mit folgender Funktion den Druckauftrag, und rufen Sie das Dialogfeld „Drucken“ für das jeweilige Betriebssystem auf: PrintJob.start().
  3. Fügen Sie mit folgender Funktion dem Druckauftrag Seiten hinzu (die Funktion muss für jede Seite, die hinzugefügt werden soll, einzeln aufgerufen werden): PrintJob.addPage().
  4. Senden Sie mit folgender Funktion den Druckauftrag an den Drucker: PrintJob.send().
  5. Löschen Sie mit folgender Funktion den Druckauftrag: delete PrintJob.

    Anhand des folgenden ActionScript-Codes wird das Erstellen eines Druckauftrags für eine Schaltfläche dargestellt:

    myButton.onRelease = function() 
    { 
        var my_pj = new PrintJob(); 
        var myResult = my_pj.start(); 
        if(myResult){ 
            myResult = my_pj.addPage (0, {xMin : 0, xMax: 400, yMin: 0, 
                yMax: 400}); 
            myResult = my_pj.addPage ("myMovieClip", {xMin : 0, xMax: 400, 
                yMin: 400, yMax: 800},{printAsBitmap:true}, 1); 
            myResult = my_pj.addPage (1, null,{printAsBitmap:false}, 2); 
            myResult = my_pj.addPage (0); 
            my_pj.send(); 
        } 
        delete my_pj; 
    }

    Es kann jeweils nur ein Duckauftrag ausgeführt werden. Sie können einen zweiten Druckauftrag erst dann erstellen, wenn der vorherige Druckauftrag eine der folgenden Bedingungen erfüllt:

    • Der Druckauftrag wurde erfolgreich abgeschlossen, und die Methode PrintJob.send() wurde aufgerufen.

    • Die Methode PrintJob.start() gibt den Wert false zurück.

    • Die Methode PrintJob.addPage() gibt den Wert false zurück.

    • Die Methode delete PrintJob wurde aufgerufen.

Druckaufträge starten

Das Aufrufen der ActionScript 2.0-Methode PrintJob.start() weist den Flash Player an, den Druckauftrag an das Betriebssystem des Benutzers weiterzuleiten (Spoolvorgang). Außerdem wird hierdurch das Betriebssystem angewiesen, das Dialogfeld „Drucken“ anzuzeigen.

Wenn der Benutzer eine Option zum Starten des Druckvorgangs auswählt, gibt die Methode PrintJob.start() den Wert true zurück. (Wenn der Benutzer den Druckauftrag abbricht, wird der Wert false zurückgegeben, und das Skript ruft nur die Funktion delete auf). Bei erfolgreicher Ausführung der Methode PrintJob.start() werden die Werte für die Eigenschaften paperHeight, paperWidth, pageHeight, pageWidth und orientation festgelegt.

Bei einigen Betriebssystemen kann ein zusätzliches Dialogfeld angezeigt werden, bis der Spoolvorgang abgeschlossen ist und die Funktion PrintJob.send aufgerufen wird: Aufrufen von PrintJob.addPage() und PrintJob.send() sollten möglichst schnell erfolgen. Wenn zwischen dem Aufruf der Funktion PrintJob.start() und dem Aufruf der Funktion PrintJob.send(), die zum Senden des Druckauftrags an den Drucker dient, 10 Sekunden vergehen, wird vom Flash Player tatsächlich nur die Funktion PrintJob.send() aufgerufen, sodass die mit der Funktion PrintJob.addPage() hinzugefügten Seiten gedruckt werden und der Spoolvorgang beendet wird.

Beim Erstellen eines neuen Druckauftrags werden die Eigenschaften von PrintJob() mit Null initialisiert. Wenn die Funktion PrintJob.start() aufgerufen wird, nachdem der Benutzer im entsprechenden Dialogfeld des Betriebssystems die Druckoption ausgewählt hat, ruft Flash Player die Druckeinstellungen aus dem Betriebssystem ab. Die Funktion PrintJob.start() übernimmt folgende Eigenschaften:

Eigenschaft

Typ

Einheit

Hinweis

PrintJob.paperHeight

Zahl

Punkt

Gesamthöhe des Papiers

PrintJob.paperWidth

Zahl

Punkt

Papierbreite

PrintJob.pageHeight

Zahl

Punkt

Höhe des tatsächlich druckbaren Seitenbereichs; benutzerdefinierte Ränder sind nicht enthalten

PrintJob.pageWidth

Zahl

Punkt

Breite des tatsächlich druckbaren Seitenbereichs; benutzerdefinierte Ränder sind nicht enthalten

PrintJob.orientation

String

Ausrichtung als Hochformat oder Querformat

Druckaufträgen Seiten hinzufügen

Mit der ActionScript 2.0-Methode PrintJob.addPage() können Sie einem Druckauftrag Seiten hinzufügen. Die Methode kann bis zu vier Parameter enthalten. Der einzige erforderliche Parameter ist target/level. Die drei optionalen Parameter sind printArea, options und frameNum.

Wenn Sie keinen bestimmten optionalen Parameter, sondern andere optionale Parameter verwenden, geben Sie NULL anstelle des ausgelassenen optionalen Parameters ein.

Bei Verwendung aller vier Parameter lautet die Syntax der Funktion folgendermaßen:

MyPrintJob.addPage(target[,printArea:Object, options:Object, frameNum:Number]):boolean;

Bei Angabe von ungültigen Parametern werden für den Druckauftrag die Standardwerte der Parameter verwendet.

Jeder Aufruf zum Hinzufügen einer neuen Seite ist eindeutig zugeordnet, sodass Sie die Parameter ändern können, ohne dass die für vorherige Aufrufe festgelegten Parameter davon beeinflusst werden. Sie können beispielsweise angeben, dass eine Seite als Bitmapbild und eine andere Seite als Vektorgrafik gedruckt werden soll. Sie können einem Druckauftrag so viele Seiten wie erforderlich hinzufügen. Jeder Aufruf zum Hinzufügen einer Seite entspricht einer gedruckten Seite.

Hinweis: Jede ActionScript-Code, der zum Ändern eines resultierenden Ausdrucks aufzurufen ist, muss vor dem Aufruf der Methode PrintJob.addPage() ausgeführt werden. Der ActionScript-Code kann jedoch vor oder nach einem neuen PrintJob()method ausgeführt werden. Wenn ein Bild einen Aufruf der Methode PrintJob.addPage() enthält, ist durch den Aufruf allein nicht sichergestellt, dass beim Drucken des Bilds das ActionScript-Skript zu diesem Bild ausgeführt wird.

Ziel angeben

Für den ActionScript 2.0-Parameter target können Sie entweder eine Zahl angeben, die einer Stufe entspricht (z. B. 0 für „_root document“), oder einen String, der den Instanznamen eines Movieclips ("myMovieClip") angibt.

Druckbereich festlegen

Für den optionalen Parameter printArea können folgende Werte angegeben werden:

{xMin:Number, xMax:Number, yMin:Number, yMax:Number}

Die Werte xMin, xMax, yMin und yMax stehen für Bildschirmpixel in Relation zur Zielstufe oder zum Registrierungspunkt des Movieclips. Die Ausrichtung des Druckbereichs geht von der linken oberen Ecke des druckbaren Bereichs auf der Seite aus. Wenn der Druckbereich größer als der druckbare Bereich auf der Seite ist, werden die Druckdaten abgeschnitten, die über den rechten und unteren Rand der Seite hinausgehen.


A.
Papierrechteck

B.
Seitenrechteck

C.
(594,774)

D.
(576,756)

E.
(0,0)

F.
(-18,-18)

Wenn Sie keinen Druckbereich oder einen ungültigen Druckbereich angeben, wird als Standardwert für diesen Parameter der Bühnenbereich des Stammdokuments verwendet.

Skalieren, Punkt und Pixel

Bei einem Druckauftrag mithilfe der PrintJob-Klasse wird der Flash-Inhalt standardmäßig ohne Skalierung gedruckt. Beispiel: Ein Objekt, das auf dem Bildschirm 144 Pixel breit ist, wird mit einer Breite von 144 Punkt bzw. 2 Zoll gedruckt

(1 Punkt entspricht 1 Pixel; im Authoring-Tool entsprechen 72 Pixel einem Zoll, und auf Papier entsprechen 72 Punkt einem Zoll).

Damit sich der Benutzer besser vorstellen kann, wie der Flash-Bildschirminhalt als gedruckte Seite aussehen wird, ist es wichtig, die Relation zwischen den Bildschirm- und Druckmaßeinheiten zu kennen. „Pixel“ ist eine Bildschirmmaßeinheit, während „Punkt“ eine Druckmaßeinheit ist. Sowohl 1 Pixel als auch 1 Punkt entspricht 1/72 Zoll (0,35277 mm). Ein Twip entspricht 1/20 Punkt bzw. Pixel (0,01764 mm).

In der folgenden Liste werden die Relationen zwischen den Maßeinheiten weiter verdeutlicht.

  • 1 Pixel = 20 Twip

  • 1 Punkt = 20 Twip

  • 72 Pixel = 1 Zoll (2,54 cm)

  • 72 Punkt = 1 Zoll (2,54 cm)

  • 567 Twip = 1 Zoll (1 cm)

  • 1440 Twip = 1 Zoll (2,54 cm)

    Legen Sie die Eigenschaften MovieClip.xscale und MovieClip.yscale eines Movieclips zum Skalieren vor dem Druckvorgang fest, und setzen Sie diese hinterher wieder auf ihre ursprünglichen Werte zurück. Wenn Sie einen Movieclip skalieren und einen Wert für die Eigenschaft printArea übergeben, entsprechen die Pixelangaben in printAreader ursprünglichen Größe des Movieclips. Das heißt, wenn Sie die Skalierung eines Movieclips auf 50 % setzen und einen Druckbereich von 500 x 500 Pixel angeben, ist der gedruckte Inhalt identisch mit dem Inhalt, der ohne Skalierung des Movieclips gedruckt werden würde. Der Ausdruck ist jedoch nur halb so groß wie das Original. Weitere Informationen finden Sie unter „addPage (PrintJob.addPage-Methode)Methode der printjob-Klasse im ActionScript 2.0-Referenzhandbuch.

Druck als Vektorgrafik oder Bitmapbild angeben

Mit dem Parameter options können Sie angeben, ob der Ausdruck als Vektorgrafik oder als Bitmapbild erfolgen soll. Verwenden Sie für diesen optionalen Parameter folgende Syntax:

{printAsBitmap:boolean}

Der Standardwert ist false, dabei erfolgt der Ausdruck im Vektorformat. Beachten Sie bei der Auswahl des Druckformats folgende Hinweise:

  • Wenn der zu druckende Inhalt ein Bitmapbild enthält, sollte auch der Druckauftrag als Bitmapbild ausgeführt werden, damit Transparenz- und Farbeffekte beibehalten werden.

  • Wenn der Inhalt jedoch keine Bitmapbilder enthält, sollte der Druckauftrag hingegen als Vektorgrafik ausgeführt werden, um eine höhere Bildqualität zu erreichen.

Zu druckende Bilder angeben

Mit dem Parameter frameNum können Sie ein bestimmtes Bild zum Drucken angeben. Wenn Sie keine Bildnummer für diesen Parameter angeben, wird standardmäßig das aktuelle Bild des Ziels bzw. der Stufe gedruckt, das bzw. die beim Hinzufügen der Seiten für den ersten Parameter angegeben wurde.

Drucken oder Löschen von Druckaufträgen

  1. Nach dem ActionScript 2.0-Aufruf addPage() können Sie einen Druckauftrag an den Drucker senden, indem Sie mit der Methode PrintJob.send() den Flash Player anweisen, den Spoolvorgang für den Druckauftrag zu beenden, damit der Drucker den Druckvorgang starten kann.
  2. Um den Druckauftrag zu löschen, nachdem er an den Drucker gesendet wurde, können Sie mit der ActionScript-Funktion delete PrintJob() das PrintJob-Objekt löschen, um Speicher freizugeben.

Bilder unabhängig von der PrintJob-Klasse drucken

Die PrintJob-Klasse von ActionScript 2.0, die für Flash Player 7 und neuere Versionen verfügbar ist, bietet gegenüber den Druckmethoden print() und printAsBitmap() erhebliche Vorteile. Wenn Sie jedoch Druckaufträge über Flash Player 6 und frühere Versionen bis hin zu Flash Player 4.0.25 (Windows) und 4.0.20 (Macintosh) ausführen möchten, können Sie die Funktionen print() and printAsBitmap() sowie Bildbezeichnungen weiterhin verwenden.

Wenn Sie Druckvorgänge unabhängig von der PrintJob-Klasse mit Flash Player ausführen möchten, können Sie einzelne Bilder zum Drucken angeben und deren Druckbereich festlegen.

Druckbereiche angeben (ohne das PrintJob-Objekt zu verwenden)

Standardmäßig wird der Druckbereich beim Drucken von Bildern durch die Bühne des Films bestimmt. Objekte, die über die Bühne hinausreichen, werden abgeschnitten und nicht gedruckt. Geladene Filme verwenden ihre eigene Bühnengröße als Druckbereich, nicht die Bühnengröße des SWF-Hauptdatei.

Als Alternative zur Bühnengröße eines Dokuments können Sie die folgenden Druckbereiche festlegen:

  • Für den Druck über das Kontextmenü von Flash Player oder mit der Funktion print() von ActionScript 2.0 können Sie die Begrenzungsbox des SWF-Inhalts als Druckbereich für alle Bilder festlegen, indem Sie ein Objekt in einem Bild als Begrenzungsbox auswählen. Diese Option empfiehlt sich z. B. zum Drucken eines ganzseitigen Datenblatts von einem Webbanner aus.

  • Mit der Funktion print() können Sie die zusammengesetzte Begrenzungsbox aller druckbaren Bilder in einer Zeitleiste als Druckbereich verwenden, z. B. zum Drucken von mehreren Bildern mit demselben Registrierungspunkt. Zur Verwendung der zusammengesetzten Begrenzungsbox können Sie den Parameter bMax wie in folgendem Beispiel einsetzen:

    print ("myMovie", "bmax")
  • Mit der Funktion print() können Sie den Druckbereich für jedes Bild ändern und Objekte so skalieren, dass sie in den Druckbereich passen, damit z. B. Objekte mit unterschiedlicher Größe in jedem Bild die gedruckte Seite ausfüllen. Wenn Sie die Begrenzungsbox für jedes Bild ändern möchten, verwenden Sie den Frame-Parameter für die Print-Aktion, wie in folgendem Beispiel gezeigt:

    print ("myMovie", "bframe")
  • Mit der Funktion print() können Sie die Begrenzungsbox für ein bestimmtes Bild in einem Dokument als Druckbereich für alle druckbaren Bilder in diesem Dokument festlegen, wie in folgendem Beispiel:

    print ("myMovie", "bmovie")

    Mit der Bildbezeichnung „#b“ können Sie ein Bild kennzeichnen, auf dessen Grundlage der Druckbereich festgelegt wird. Die Bezeichnung „#b“ muss sich auf derselben Ebene befinden wie eines der Bilder mit der Bezeichnung „#p“.

    Weitere Informationen zu den Parametern der print()-Funktion finden Sie im Abschnitt zur print-Funktion im ActionScript 2.0-Referenzhandbuch.

Funktion „print()“ verwenden (ohne das PrintJob-Objekt zu verwenden)

Die Grundsyntax der Funktion print() von ActionScript 2.0, die Sie einer Schaltfläche oder einem anderen Auslöser im Dokument zur Aktivierung eines Druckvorgangs zuweisen können, lautet folgendermaßen:

print (target, "Bounding box");

Der Parameter „target“ gibt den Speicherort der zu druckenden Bilder an, während der Parameter „bounding box“ den Druckbereich angibt.

Sie können die Funktion print() einer Schaltfläche, einem Bild oder Movieclip im Dokument zuweisen, damit die Benutzer Flash-Inhalt drucken können. Wenn Sie die Funktion print() einem Bild zuweisen, wird die Aktion ausgeführt, wenn der Abspielkopf das angegebene Bild erreicht.

Mit der Funktion print() können Sie zusätzlich zu den Bildern in der Hauptzeitleiste auch Bilder in anderen Movieclips drucken. Mit einer print()-Funktion wird zwar nur jeweils eine Zeitleiste zum Drucken ausgewählt, Sie können jedoch eine beliebige Anzahl von Bildern in dieser Zeitleiste zum Drucken auswählen. Wenn Sie einer Schaltfläche oder einem Bild die Funktion print() mehrmals zuweisen, wird das Dialogfeld „Drucken“ für jede ausgeführte Aktion angezeigt.

Weitere Informationen finden Sie im Abschnitt zur print-Funktion im ActionScript 2.0-Referenzhandbuch.