Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Drucken > Aufgaben in Flash Player und Drucken im System | |||
Da in Flash Player Seiten an die Druckschnittstelle des Betriebssystems weitergeleitet werden, sollten Sie sich mit dem Umfang der in Flash Player sowie der über die Druckschnittstelle des Betriebssystems verwalteten Aufgaben vertraut machen. In Flash Player können Druckaufträge initiiert, einige Seiteneinstellungen des Druckers gelesen sowie Inhalte für Druckaufträge an das Betriebssystem weitergeleitet werden. Darüber hinaus kann überprüft werden, ob ein Druckauftrag vom Benutzer oder vom System abgebrochen wurde. Andere Prozesse, z. B. Anzeigen druckerspezifischer Dialogfelder, Abbrechen eines Druckauftrags in der Druckwarteschlange oder Anzeigen des Druckerstatus, werden über das Betriebssystem durchgeführt. In Flash Player können Fehler beim Initiieren oder Formatieren eines Druckauftrags behoben werden. Es können jedoch nur bestimmte Eigenschaften oder Fehlerzustände der Druckschnittstelle des Betriebssystems gemeldet werden. In dem von Entwicklern geschriebenen Code sollte auf diese Eigenschaften oder Fehler entsprechend reagiert werden.
Falls der Benutzer einen Druckauftrag abgebrochen hat, sollten Sie zunächst überprüfen, ob die PrintJob.start()-Methode den Wert true zurückgibt, und erst dann addPage() und send() aufrufen. Sie können auf einfache Weise überprüfen, ob diese Methoden abgebrochen wurden, indem Sie sie wie folgt in eine if-Anweisung einschließen:
if (myPrintJob.start())
{
// Hier addPage()- und send()-Anweisungen einfügen.
}
Wenn für PrintJob.start() der Wert true zurückgegeben wird, d. h., der Benutzer „Drucken" ausgewählt hat (oder in Flash Player ein Print-Befehl initiiert wurde), können die addPage()- und die send()-Methode aufgerufen werden.
Zur besseren Verwaltung des Druckvorgangs werden in Flash Player nun Ausnahmen für die PrintJob.addPage()-Methode ausgelöst, sodass Fehler abgefangen und dem Benutzer Informationen und Optionen bereitgestellt werden können. Wenn bei einer PrintJob.addPage()-Methode Fehler auftreten, können Sie zudem eine andere Funktion aufrufen oder den aktuellen Druckauftrag abbrechen. Sie können diese Ausnahmen abfangen, indem Sie addPage()-Aufrufe wie im folgenden Beispiel in eine try..catch-Anweisung einbetten. In diesem Beispiel ist [params] ein Platzhalter für die Parameter, mit denen der zu druckende Inhalt angegeben wird:
if (myPrintJob.start())
{
try
{
myPrintJob.addPage([params]);
}
catch (error:Error)
{
// Fehler verarbeiten
}
myPrintJob.send();
}
Nachdem der Druckauftrag gestartet wurde, können Sie mit PrintJob.addPage() Inhalte hinzufügen und prüfen, ob dadurch eine Ausnahme ausgelöst wird (z. B. wenn der Benutzer den Druckauftrag abgebrochen hat). Wenn eine Ausnahme ausgelöst wird, können Sie Code zur catch-Anweisung hinzufügen, um dem Benutzer (oder Flash Player) Informationen oder Optionen bereitzustellen, oder den aktuellen Druckauftrag abbrechen. Wenn die Seite erfolgreich hinzugefügt wurde, können Sie fortfahren und die Seiten mit PrintJob.send() an den Drucker senden.
Wenn in Flash Player beim Senden des Druckauftrags an den Drucker ein Fehler auftritt (wenn der Drucker z. B. offline ist), können Sie auch diese Ausnahme abfangen und dem Benutzer (oder Flash Player) Informationen oder weitere Optionen bereitstellen (z. B. Anzeigen eines Meldungstexts oder einer Warnmeldung in der Flash-Animation). Sie können beispielsweise mit einer if..else-Anweisung einem Textfeld neuen Text zuweisen, wie im folgenden Codebeispiel dargestellt:
if (myPrintJob.start())
{
try
{
myPrintJob.addPage([params]);
}
catch (error:Error)
{
// Fehler verarbeiten
}
myPrintJob.send();
}
else
{
myAlert.text = "Print job canceled";
}
Ein praktisches Beispiel finden Sie unter Beispiel: Skalieren, Zuschneiden und Anpassen.
Nachdem der Benutzer im Druckdialogfeld auf „OK" geklickt hat und für PrintJob.start() der Wert true zurückgegeben wurde, können Sie auf die Eigenschaften zugreifen, die durch die Druckereinstellungen festgelegt sind. Zu diesen Eigenschaften zählen die Papierhöhe und -breite (pageHeight und pageWidth) sowie die Ausrichtung des Inhalts auf dem Papier. Da es sich um Druckereinstellungen handelt, die nicht über Flash Player gesteuert werden, können Sie diese Einstellungen nicht ändern. Sie können jedoch die Inhalte, die an den Drucker gesendet werden, entsprechend den aktuellen Einstellungen ändern. Weitere Informationen finden Sie unter Festlegen von Seitengröße, Skalierung und Ausrichtung.
Sie können den Druckauftrag so festlegen, dass jede Seite in der Druckwarteschlange als Vektorgrafik oder Bitmapbild verarbeitet wird. In einigen Fällen wird beim Vektordruck eine kleinere Datei in der Druckwarteschlange erstellt und ein besseres Bild erzielt als beim Bitmapdruck. Wenn der Inhalt jedoch ein Bitmapbild enthält und Sie die Alphatransparenz oder die Farbeffekte beibehalten möchten, drucken Sie die Seite als Bitmapbild. Bei einem nicht PostScript-fähigen Drucker werden alle Vektorgrafiken automatisch in Bitmapbilder umgewandelt. Geben Sie den Bitmapdruck im dritten Parameter von PrintJob.addPage() an, indem Sie ein PrintJobOptions-Objekt übergeben, bei dem der printAsBitmap-Parameter auf true gesetzt ist, wie im Folgenden dargestellt:
var options:PrintJobOptions = new PrintJobOptions(); options.printAsBitmap = true; myPrintJob.addPage(mySprite, null, options);
Wenn Sie keinen Wert für den dritten Parameter angeben, wird der Druckauftrag mit der Standardoption gedruckt, d. h. als Vektordruck.
|
HINWEIS |
|
Wenn Sie keinen Wert für |
In ActionScript 3.0 ist ein PrintJob-Objekt nicht auf ein einzelnes Bild beschränkt (wie dies in früheren Versionen von ActionScript der Fall war). Da im Betriebssystem jedoch Informationen zum Druckstatus angezeigt werden, nachdem der Benutzer im Druckdialogfeld auf die Schaltfläche „OK" geklickt hat, sollten Sie möglichst bald PrintJob.addPage() und PrintJob.send() aufrufen, damit Seiten an die Druckwarteschlange gesendet werden. Durch eine Verzögerung beim Erreichen des Bildes mit dem PrintJob.send()-Aufruf wird auch der Druckvorgang verzögert.
In ActionScript 3.0 gilt ein Skriptzeitlimit von 15 Sekunden. Zwischen den einzelnen Hauptanweisungen in einem Druckauftrag dürfen daher 15 Sekunden nicht überschritten werden. Mit anderen Worten, das Skriptzeitlimit von 15 Sekunden gilt für folgende Zeitintervalle:
PrintJob.start() und der ersten PrintJob.addPage()-Anweisung PrintJob.addPage() und der nächsten PrintJob.addPage()-Anweisung PrintJob.addPage()-Anweisung und PrintJob.send() Beim Überschreiten des Limits von 15 Sekunden bei einem dieser Intervalle wird bei einem folgenden Aufruf von PrintJob.start() für die PrintJob-Instanz der Wert false zurückgegeben bzw. bei einem folgenden Aufruf von PrintJob.addPage() für die PrintJob-Instanz in Flash Player eine Laufzeitausnahme ausgelöst.
Flash CS3
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000333.html