Tâches Flash Player et impression système

Flash Player transmet des pages à l'interface d'impression du système d'exploitation ; il est donc important de comprendre la répartition des tâches gérées par Flash Player et de celles gérées par l'interface d'impression du système d'exploitation Flash Player peut initialiser une tâche d'impression, lire certains des paramètres de page de l'imprimante, transmettre le contenu d'une tâche d'impression au système d'exploitation et vérifier si l'utilisateur ou le système annule une tâche. D'autres processus, tels que l'affichage de boîtes de dialogue spécifiques à l'imprimante, l'annulation d'une tâche d'impression mise en file d'attente ou l'indication de l'état de l'imprimante, sont supervisés par le système d'exploitation. Si Flash Player est capable de réagir en cas de problème lors de l'initialisation ou du formatage d'une tâche d'impression, il peut uniquement établir des rapports sur certaines propriétés ou conditions transmises par l'interface d'impression du système d'exploitation. C'est le rôle du développeur d'élaborer un code susceptible de répondre à ces propriétés ou conditions.

Sous-rubriques

Utilisation des exceptions et des renvois
Utilisation des propriétés de page
Définition du rendu vectoriel ou bitmap
Temporisation des instructions de tâche d'impression

Utilisation des exceptions et des renvois

Avant d'appeler addPage() et send(), il est recommandé de vérifier que la méthode PrintJob.start() renvoie la valeur true, au cas où l'utilisateur aurait annulé la tâche d'impression. Une manière simple de vérifier si ces méthodes ont été annulées avant de poursuivre consiste à les intégrer à une instruction if, comme suit :

if (myPrintJob.start())
{
    // Instructions addPage() et send() ici
}

Si PrintJob.start() renvoie true, c'est-à-dire si l'utilisateur a sélectionné Print (ou Flash Player a initialisé une commande Print), les méthodes addPage() et send() peuvent être appelées.

En outre, pour faciliter la gestion du processus d'impression, Flash Player transmet désormais des exceptions pour la méthode PrintJob.addPage(). Vous pouvez ainsi intercepter les erreurs et fournir des informations et des options à l'utilisateur. Si une méthode PrintJob.addPage() échoue, il est également possible d'appeler une autre fonction ou d'arrêter la tâche d'impression en cours. Pour intercepter ces exceptions, incorporez des appels addPage() dans une instruction try..catch, comme illustré ci-après. Dans cet exemple, [params] constitue une balise d'emplacement pour les paramètres spécifiant le contenu réel à imprimer :

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // En cas d'erreur, 
    }
    myPrintJob.send();
}

Une fois la tâche d'impression lancée, vous pouvez ajouter le contenu PrintJob.addPage() pour voir s'il génère une exception (par exemple si l'utilisateur a annulé la tâche d'impression). Si c'est le cas, vous pouvez soit ajouter une logique à l'instruction catch pour fournir à l'utilisateur (ou Flash Player) des informations et des options, soit arrêter la tâche d'impression en cours. Si l'ajout de page réussit, vous pouvez procéder à l'envoi des pages vers l'imprimante à l'aide de PrintJob.send().

Si Flash Player rencontre des problèmes lors de l'envoi de la tâche d'impression à l'imprimante (par exemple si l'imprimante est déconnectée), vous pouvez également intercepter cette exception et fournir à l'utilisateur (ou Flash Player) des informations ou des options supplémentaires (telles que l'affichage d'un message ou l'émission d'une alerte dans l'animation Flash). Vous pouvez par exemple associer un nouveau texte à un champ texte dans une instruction if..else, comme le montre le code suivant :

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // En cas d'erreur. 
    }
    myPrintJob.send();
}
else
{
    myAlert.text = "Print job canceled";
}

Pour un exemple pratique, voir Exemple : Redimensionnement, recadrage et ajustement.

Utilisation des propriétés de page

Lorsque l'utilisateur clique sur OK dans la boîte de dialogue d'impression et que PrintJob.start() renvoie true, vous pouvez accéder aux propriétés définies par les paramètres de l'imprimante. Il s'agit notamment de la largeur et de la hauteur du papier (pageHeight et pageWidth) et de l'orientation du contenu sur la feuille. En provenance de l'imprimante, ces paramètres, que Flash Player ne contrôle pas, ne peuvent être modifiés. Vous pouvez en revanche les utiliser pour disposer le contenu à envoyer à l'imprimante. Pour plus d'informations, voir Définition de la taille, de l'échelle et de l'orientation.

Définition du rendu vectoriel ou bitmap

Vous avez la possibilité de définir la tâche d'impression de manière à transmettre chaque page sous forme d'image vectorielle ou bitmap. Dans certains cas, l'impression vectorielle produit un fichier de file d'attente plus réduit et une image de meilleure qualité que l'impression bitmap. Toutefois, si le contenu inclut une image bitmap et que vous souhaitiez préserver la transparence alpha ou tout autre effet de couleur, il est recommandé de choisir l'impression bitmap pour cette page. En outre, une imprimante non PostScript convertit automatiquement les graphiques vectoriels en images bitmap. L'impression bitmap se spécifie dans le troisième paramètre de PrintJob.addPage(), par transmission d'un objet PrintJobOptions dont le paramètre printAsBitmap a la valeur true, comme suit :

var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
myPrintJob.addPage(mySprite, null, options);

Si vous ne spécifiez aucune valeur pour le troisième paramètre, la tâche d'impression utilise le paramètre par défaut, soit l'impression vectorielle.

REMARQUE

 

Si vous ne souhaitez pas spécifier de valeur pour printArea (le deuxième paramètre) mais en définir une pour l'impression bitmap, utilisez la valeur null pour printArea.

Temporisation des instructions de tâche d'impression

Contrairement aux versions précédentes, ActionScript 3.0 ne limite pas un objet PrintJob à une image unique. Cependant, comme le système d'exploitation indique l'état de l'impression après que l'utilisateur a cliqué sur le bouton OK dans la boîte de dialogue d'impression, appelez PrintJob.addPage() et PrintJob.send() dès que possible pour envoyer les pages au spouleur. Si l'accès à l'image contenant l'appel PrintJob.send() est soumis à un délai, le processus d'impression est également retardé.

Dans ActionScript 3.0, le délai de script est de 15 secondes. Par conséquent, l'intervalle entre chaque instruction essentielle de la séquence de tâche d'impression ne peut dépasser 15 secondes. En d'autres termes, la limite de 15 secondes concerne les intervalles suivants :

Si l'un des intervalles ci-dessus excède 15 secondes, l'appel suivant de la méthode PrintJob.start() pour l'occurrence de PrintJob renvoie false et l'appel suivant de la méthode PrintJob.addPage() pour l'occurrence de PrintJob entraîne le renvoi d'une exception d'exécution par Flash Player.


Flash CS3

 

M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire

Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000333.html