Techniques d’impression avancées

Adobe AIR 2 et ultérieur

Depuis la version 2 d’Adobe AIR, la classe PrintJob comporte d’autres propriétés et méthodes et trois classes supplémentaires, PrintUIOptions, PaperSize et PrintMethod, sont prises en charge. Ces modifications gèrent d’autres flux de travail d’impression et permettent aux créateurs de mieux contrôler le processus d’impression. Parmi les modifications figurent :

  • Boîtes de dialogue de mise en page : affichage de boîtes de dialogue de mise en page standard et personnalisée. L’utilisateur peut définir les étendues de pages, le format du papier, l’orientation et la mise à l’échelle avant de lancer l’impression.

  • Affichage avant l’impression : permet de créer un mode d’affichage qui indique avec précision le format du papier, les marges et la position du contenu sur la page.

  • Impression restreinte : les créateurs peuvent restreindre les options d’impressions, telles que l’étendue de pages imprimables.

  • Options relatives à la qualité : les créateurs peuvent ajuster la qualité d’impression d’un document et autoriser l’utilisateur à sélectionner les options de résolution et de couleur.

  • Sessions d’impression multiples : il est à présent possible d’utiliser une occurrence unique de PrintJob pour gérer plusieurs sessions d’impression. Les applications peuvent proposer des paramètres cohérents chaque fois que les boîtes de dialogue de mise en page et d’impression s’affichent.

Modifications du flux de travaux d’impression

Le nouveau flux de travaux d’impression se compose des étapes suivantes :

  • new PrintJob() : crée une occurrence de PrintJob (ou réutilise une occurrence existante). Un grand nombre de méthodes et de propriétés PrintJob, telles que selectPaperSize() , sont disponibles avant le lancement de la tâche d’impression ou lors de l’impression.

  • PrintJob.showPageSetupDialog() : (facultatif) affiche la boîte de dialogue de mise en page sans démarrer de tâche d’impression.

  • PrintJob.start() ou PrintJob.start2() : parallèlement à la méthode start() , la méthode start2() permet de lancer le processus de mise en file d’attente d’impression. La méthode start2() permet d’activer l’affichage de la boîte de dialogue d’impression et, le cas échéant, de la personnaliser.

  • PrintJob.addPage() : ajoute un contenu à la tâche d’impression. Cette étape est identique à celle du processus existant.

  • PrintJob.send() ou PrintJob.terminate() : envoie les pages à l’imprimante sélectionnée ou met fin à la tâche d’impression sans l’envoyer. Les tâches d’impression sont arrêtées suite à une erreur. Si une occurrence de PrintJob est arrêtée, elle peut être réutilisée. Que la tâche d’impression soit envoyée à l’imprimante ou arrêtée, les paramètres d’impression actifs sont conservés lorsque vous réutilisez l’occurrence de PrintJob.

Boîte de dialogue de mise en page

La méthode showPageSetupDialog() affiche la boîte de dialogue de mise en page du système d’exploitation si l’environnement actif le permet. Vérifiez toujours la propriété supportsPageSetupDialog avant d’appeler cette méthode. Voici un exemple simple :

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
//check for static property supportsPageSetupDialog of PrintJob class 
if (PrintJob.supportsPageSetupDialog) { 
    myPrintJob.showPageSetupDialog(); 
}

Si besoin est, vous pouvez associer la méthode à une propriété de la classe PrintUIOptions pour contrôler les options affichées dans la boîte de dialogue de mise en page. Vous pouvez définir le nombre minimal et maximal de pages. L’exemple suivant restreint l’impression aux trois premières pages :

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
if (PrintJob.supportsPageSetupDialog) { 
    var uiOpt:PrintUIOptions = new PrintUIOptions(); 
    uiOpt.minPage = 1; 
    uiOpt.maxPage = 3; 
    myPrintJob.showPageSetupDialog(uiOpt); 
}

Modification des paramètres d’impression

Vous pouvez modifier les paramètres d’une occurrence de PrintJob à tout moment après sa création. Il est ainsi possible de modifier les paramètres entre des appels d’ addPage() et après l’envoi ou l’arrêt d’une tâche d’impression. Certains paramètres, tels que la propriété printer , s’appliquent à la tâche d’impression entière et non à des pages spécifiques. Ils doivent être définis avant d’appeler start() ou start2() .

La méthode selectPaperSize() permet de définir le format du papier par défaut dans les boîtes de dialogue de mise en page et d’impression. Vous pouvez également l’appeler au cours d’une tâche d’impression pour définir le format du papier d’une étendue de pages. Vous utilisez à cet effet des constantes définies dans la classe PaperSize ; comme illustré par l’exemple suivant, qui sélectionne une enveloppe de format 10 :

import flash.printing.PrintJob; 
import flash.printing.PaperSize; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.selectPaperSize(PaperSize.ENV_10);

La propriété printer permet d’extraire ou de définir le nom de l’imprimante associée à la tâche d’impression active. Par défaut, elle est définie sur le nom de l’imprimante par défaut. La propriété printer est définie sur null si aucune imprimante n’est disponible ou si le système ne prend pas en charge l’impression. Pour changer d’imprimante, commencez par obtenir la liste des imprimantes disponibles par le biais de la propriété printers . Cette propriété est un objet Vector dont les éléments String correspondent aux noms d’imprimantes disponibles. Définissez la propriété printer sur l’une de ces valeurs String pour activer l’imprimante correspondante. Il est impossible de modifier la propriété printer d’une tâche d’impression active. Toute tentative de modification de cette propriété après qu’un appel de start() ou start2() a abouti ou avant l’envoi ou l’arrêt de la tâche d’impression échoue. Exemple de définition de la propriété :

import flash.printing.PrintJob; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.printer = "HP_LaserJet_1"; 
myPrintJob.start();

La propriété copies extrait la valeur correspondant au nombre d’exemplaires défini dans la boîte de dialogue d’impression du système d’exploitation. Les propriétés firstPage et lastPage extraient l’étendue de pages. La propriété orientation extrait le paramètre d’orientation de page. Vous pouvez définir ces propriétés de sorte à remplacer les valeurs saisies dans la boîte de dialogue d’impression. L’exemple suivant définit ces propriétés :

import flash.printing.PrintJob; 
import flash.printing.PrintJobOrientation; 
     
var myPrintJob:PrintJob = new PrintJob(); 
myPrintJob.copies = 3; 
myPrintJob.firstPage = 1; 
myPrintJob.lastPage = 3; 
myPrintJob.orientation = PrintJobOrientation.LANDSCAPE;

Les paramètres en lecture seule suivants associés à PrintJob fournissent des informations pertinentes sur la configuration de l’imprimante active :

  • paperArea : limites rectangulaires du support d’impression, exprimées en points.

  • printableArea : limites rectangulaires de la zone imprimable, exprimées en points.

  • maxPixelsPerInch : résolution physique de l’imprimante active, exprimée en pixel par pouce.

  • isColor : capacité de l’imprimante active à imprimer les couleurs (renvoie true si l’imprimante active gère les couleurs).

Voir Exemple d’impression : options d’impression et de mise en page