Flex - Support d'impression

Flex offre une classe spéciale FlexPrintJob pour imprimer des objets flex.

  • FlexPrintJob peut être utilisé pour imprimer un ou plusieurs objets Flex, tels qu'un conteneur Form ou VBox.

  • FlexPrintJob imprime l'objet et tous les objets qu'il contient.

  • Les objets peuvent être tout ou partie de l'interface affichée.

  • Les objets peuvent être des composants qui mettent en forme des données spécifiquement pour l'impression.

  • La classe FlexPrintJob vous permet de mettre à l'échelle la sortie pour l'adapter à la page.

  • La classe FlexPrintJob utilise automatiquement plusieurs pages pour imprimer un objet qui ne tient pas sur une seule page.

  • La classe FlexPrintJob oblige le système d'exploitation à afficher une boîte de dialogue Imprimer. Vous ne pouvez pas imprimer sans une action de l'utilisateur.

Préparer et envoyer un travail d'impression

Vous imprimez la sortie en préparant et en envoyant un travail d'impression. Créons une instance de la classe FlexPrintJob

var printJob:FlexPrintJob = new FlexPrintJob();

Démarrez le travail d'impression

printJob.start();

Flex obligera le système d'exploitation à afficher une boîte de dialogue d'impression. Ajouter un ou plusieurs objets au travail d'impression et spécifier comment les mettre à l'échelle

printJob.addObject(myObject, FlexPrintJobScaleType.MATCH_WIDTH);

Chaque objet commence sur une nouvelle page. Envoyez le travail d'impression à l'imprimante

printJob.send();

Exemple d'impression

Étape La description
1 Créez un projet avec un nom HelloWorld sous un package com.tutorialspoint.client comme expliqué dans le chapitre Flex - Créer une application .
2 Modifiez HelloWorld.mxml comme expliqué ci-dessous. Gardez le reste des fichiers inchangé.
3 Compilez et exécutez l'application pour vous assurer que la logique métier fonctionne conformément aux exigences.

Voici le contenu du fichier mxml modifié src/com.tutorialspoint/HelloWorld.mxml.

<?xml version = "1.0" encoding = "utf-8"?>
<s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009" 
   xmlns:s = "library://ns.adobe.com/flex/spark" 
   xmlns:mx = "library://ns.adobe.com/flex/mx"
   width = "100%" height = "100%"
   minWidth = "500" minHeight = "500" 
   initialize = "application_initializeHandler(event)">
   
   <fx:Style source = "/com/tutorialspoint/client/Style.css" />
   <fx:Script>
     <![CDATA[
         import mx.controls.Alert;
         import mx.events.FlexEvent;
         import mx.printing.FlexPrintJob;
         import mx.printing.FlexPrintJobScaleType;
         
         protected function btnClickMe_clickHandler(event:MouseEvent):void {
            
            // Create an instance of the FlexPrintJob class.
            var printJob:FlexPrintJob = new FlexPrintJob();
         
            // Start the print job.
            if (printJob.start() != true) return;

            // Add the object to print. Do not scale it.
            printJob.addObject(myDataGrid, FlexPrintJobScaleType.NONE);

            // Send the job to the printer.
            printJob.send();
        }

        protected function application_initializeHandler(event:FlexEvent):void {
            lblHeader.text = "My Hello World Application";				
        }
     ]]>
   </fx:Script>
   
   <s:BorderContainer width = "500" height = "500" id = "mainContainer" 
      styleName = "container">
      <s:VGroup width = "100%" height = "100%" gap = "50"
         horizontalAlign = "center" 
         verticalAlign = "middle">
         <s:Label id = "lblHeader" fontSize = "40" color = "0x777777" 
            styleName = "heading" />
         
         <mx:DataGrid id = "myDataGrid" width = "300">
            <mx:dataProvider>
               <fx:Object Product = "Flex" Code = "1000" />
               <fx:Object Product = "GWT" Code = "2000" />
               <fx:Object Product = "JAVA" Code = "3000" />
               <fx:Object Product = "JUnit" Code = "4000" />
            </mx:dataProvider>
         </mx:DataGrid>
         
         <s:Button label = "Print Me!" id = "btnClickMe" 
            click = "btnClickMe_clickHandler(event)" 
            styleName = "button" />
      </s:VGroup>	
   </s:BorderContainer>	
</s:Application>

Une fois que vous êtes prêt avec tous les changements effectués, laissez-nous compiler et exécuter l'application en mode normal comme nous l'avons fait dans le chapitre Flex - Créer une application . Si tout va bien avec votre application, elle produira le résultat suivant: [ ]

Cliquez sur le bouton Imprimer et vous pouvez voir l'impression de la grille de données ci-dessous.