Définition de la taille, de l’échelle et de l’orientation

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

La section Impression d’une page décrit en détail les étapes d’une tâche d’impression de base, dans laquelle la sortie reproduit directement le sprite spécifié, selon sa taille d’affichage et sa position à l’écran. Néanmoins, les imprimantes utilisent différentes résolutions d’impression et certains de leurs paramètres peuvent altérer l’aspect du sprite imprimé.

Les moteurs d’exécution Flash peuvent lire les paramètres d’impression du système d’exploitation, mais notez que ces propriétés sont accessibles en lecture seule. En d’autres termes, bien que vous puissiez réagir à leur valeur, il est possible de les définir. Par exemple, il est possible de déterminer le paramètre de format de page de l’imprimante et d’ajuster votre contenu en fonction. Vous pouvez de même identifier les paramètres de marge de l’imprimante ainsi que l’orientation des pages. Pour répondre aux paramètres de l’imprimante, spécifiez une zone d’impression, effectuez un ajustement pour tenir compte de la différence entre la résolution de l’écran et la mesure de points de l’imprimante, ou faites correspondre le contenu aux paramètres de taille et d’orientation de l’imprimante de l’utilisateur.

Définition de la zone d’impression à l’aide de rectangle

La méthode PrintJob.addPage() vous permet de spécifier la partie du sprite que vous souhaitez imprimer. Le deuxième paramètre, printArea prend la forme d’un objet Rectangle. Vous pouvez fournir la valeur de ce paramètre de trois manières :

  • Créez un objet Rectangle doté de propriétés spécifiques, puis utilisez-le dans l’appel addPage() , comme dans l’exemple suivant :

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Si vous n’avez pas encore spécifié l’objet Rectangle, vous pouvez le faire dans l’appel lui-même, comme illustré ci-dessous :

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Si vous prévoyez de fournir des valeurs pour le troisième paramètre de l’appel addPage() sans pour autant spécifier un objet Rectangle, utilisez la valeur null pour le deuxième paramètre, comme suit :

    myPrintJob.addPage(sheet, null, options);

Comparaison entre les points et les pixels

La largeur et la hauteur d’un rectangle sont exprimées en pixels. Une imprimante utilise les points en tant qu’unités de mesure. Les points ont une taille physique fixe (1/72e de pouce), mais la taille d’un pixel à l’écran varie selon la résolution de ce dernier. De ce fait, le taux de conversion entre les pixels et les points dépend de la configuration de l’imprimante et du redimensionnement éventuel du sprite. Un sprite non redimensionné d’une largeur de 72 pixels mesure un pouce (2,54 cm) de large lorsqu’il est imprimé, sachant qu’un point correspond à un pixel quelle que soit la résolution de l’écran.

Vous pouvez utiliser les équivalences suivantes pour convertir les pouces ou les centimètres en twips ou points (un twip correspond à 1/20ème de point) :

  • 1 point = 1/72ème de pouce = 20 twips

  • 1 pouce = 72 points = 1 440 twips

  • 1 centimètre = 567 twips

Si vous omettez le paramètre printArea ou s’il est transmis de façon incorrecte, la zone entière du sprite est imprimée.

Redimensionnement

Si vous souhaitez redimensionner un objet Sprite avant de l’imprimer, définissez les propriétés de redimensionnement (voir Manipulation de la taille et de l’échelle des objets ) avant d’appeler la méthode PrintJob.addPage() , puis rétablissez leurs valeurs d’origine après l’impression. L’échelle d’un objet Sprite ne dépend pas de la propriété printArea . En d’autres termes, si vous spécifiez une zone d’impression de 50 pixels par 50 pixels, 2 500 pixels sont imprimés. Si vous redimensionnez l’objet Sprite, les 2 500 pixels sont imprimés, mais l’objet est imprimé à l’échelle retenue.

A titre d’exemple, voir Exemple d’impression : mise à l’échelle, recadrage et ajustement .

Impression en mode paysage ou portrait

Flash Player et AIR étant capables de détecter les paramètres d’orientation, vous pouvez insérer dans votre code ActionScript une logique permettant d’ajuster la taille du contenu ou son orientation en fonction des paramètres de l’imprimante, comme illustré dans l’exemple ci-après.

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Remarque : si vous envisagez de lire le paramètre système pour définir l’orientation du contenu sur le papier, n’oubliez pas d’importer la classe PrintJobOrientation . La classe PrintJobOrientation fournit des valeurs constantes qui définissent l’orientation du contenu sur la page. Vous importez la classe à l’aide de l’instruction suivante :
import flash.printing.PrintJobOrientation;

Ajustement de la hauteur et de la largeur au format du papier

Par l’utilisation d’une stratégie semblable à la gestion des paramètres d’orientation de l’imprimante, vous pouvez lire les paramètres de hauteur et de largeur de page, puis en tenir compte en intégrant une logique dans une instruction if . Le code suivant illustre ce cas de figure :

if (mySprite.height > myPrintJob.pageHeight) 
{ 
    mySprite.scaleY = .75; 
}

En outre, il est possible de déterminer les paramètres de marge d’une page en comparant les dimensions de cette page à celle du papier, comme illustré ci-après :

margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; 
margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;