Rapport et de l'impression en Flex; Tutorial.


Plusieurs fois, nous avons quelque chose à l'impression de fléchir dans notre projet, mais ne savaient pas comment faire ... maintenant, et si nous avions des modèles différents pour imprimer ce que nous voulons? pas facile? C'est dans ce tutoriel, je vais expliquer un processus très simple d'avoir nos rapports presque prête à recevoir les données à imprimer ... et que par actions, de créer un nouveau projet avec le nom testRelatorio. et puis créez un dossier racine (en général, src) a demandé que le projet d'impression et d'imprimer l'intérieur de ce dossier créez un nouveau dossier actif ...


Dans mon exemple, utiliser le logo du blog, si elles veulent suivre le tutoriel, copiez l'image ci-dessous et colem l'image ci-dessous dans ce dossier actifs:

Logo

Bientôt

Nous sommes maintenant la création d'un nouveau composant. Menus: File-> New-> MXML de composants et de choisir les définitions suivantes:

Novo MXML Component

Nouveau composant MXML

Cliquez sur Terminer

Nous avons notre modèle, modèle que nous avons tous le code ci-dessous:

Télécharger: template.mxml
  1. <? Xml " 1.0 " version = "1.0" " utf-8 " ?> encoding = "utf-8"?>
  2. <Mx: Canvas   " http://www.adobe.com/2006/mxml " xmlns: mx = "http://www.adobe.com/2006/mxml" " 595 " width = "595" " 842 " height = "842" " #FDF8F8 " backgroundColor = "# FDF8F8" " 1 " > backgroundAlpha = "1">
  3.     <Mx: Canvas   " 33 " x = "33" " 34 " y = "34" " 526 " width = "526" " 775 " height = "775" " safeArea " > id = "safeArea">
  4.         <Mx: Texte   " 10 " y = "10" " Header " texte = "Header" " 288 " width = "288" " 117 " height = "117" " DOC_HEADER_TEXTO " id = "DOC_HEADER_TEXTO" " #030303 " color = "# 030303" " 10 " droite = "10" " Verdana " fontFamily = "Verdana" " 13 " Fontsize = "13" " italic " fontstyle = "Italique" " right " /> textAlign = "right" />
  5.         <Mx: Canvas   " 0 " x = "0" " 192 " y = "192" " 526 " width = "526" " 583 " height = "583" " DOC_CONTEUDO " > id = "DOC_CONTEUDO">
  6.         </ Mx: Canvas>
  7.     </ Mx: Canvas>
  8.     <Mx: Image   " 33 " x = "33" " 34 " y = "34" " @Embed(source='assets/logo.png') " source = "@ Embed (source = 'actif / logo.png") " " DOC_LOGO " /> id = "DOC_LOGO" />
  9.     <Mx: Label   " 33 " x = "33" " 185 " y = "185" " Titulo " texte = "Titre" " 526 " width = "526" " 27 " height = "27" " bold " fontWeight = "gras" " normal " fontstyle = "normal" " center " textAlign = "center" " 13 " Fontsize = "13" " #CD3E06 " color = "# CD3E06" " DOC_TITULO " /> id = "DOC_TITULO" />
  10.     <Mx: Label   " 805 " y = "805" " Rodape " texte = "footer" " 526 " width = "526" " center " textAlign = "center" " 0 " horizontalCenter = "0" " DOC_RODAPE " id = "DOC_RODAPE" " #919394 " /> color = "# 919394" />
  11. </ Mx: Canvas>
Télécharger: template.mxml

Et prêt, nous avons notre modèle prêt, avec des zones de logo, l'en-tête, le titre, le contenu et les pieds de page, il doit être comme l'image:

Parte 2 - template.mxml

Partie 2 - template.mxml

Retour à notre application créée dans l'initiateur du projet (testRelatorio.mxml) et nous coller ce code:

Télécharger: testRelatorio.mxml
  1. <? Xml " 1.0 " version = "1.0" " utf-8 " ?> encoding = "utf-8"?>
  2. <Mx: Application   " http://www.adobe.com/2006/mxml " xmlns: mx = "http://www.adobe.com/2006/mxml" " absolute " mise en page = "absolue" " [1.0, 1.0] " backgroundGradientAlphas = [1.0, 1.0] " " [#FFFDFD, #FFFDFD] " > backgroundGradientColors = "[FFFDFD #, # FFFDFD]">
  3. <Mx: Script>
  4.     <! [CDATA [
  5. mx.collections.ArrayCollection importation;
  6. [Bindable]
  7. var données privées: ArrayCollection = new ArrayCollection ([(titre: "Le Livre", de la morue: "# 5345", prix: "50 €"), (titre: "Cader B", la morue: "# 553", prix: "12 €"), (titre: "GREEN FLEX," la morue "# 5885", prix: 30 € "}]);
  8. ]]>
  9. </ Mx: Script>
  10.     <Mx: DataGrid   " {dados} " DataProvider = "(données)" " 350 " width = "350" " 0 " horizontalCenter = "0" " 0 " verticalCenter = "0" " minhaDataGrid " > id = "minhaDataGrid">
  11.         <Mx: Columns>
  12.             <Mx: DataGridColumn   " Cod. " headerText = "Cod." " cod " de données = "cabillaud" " 30 " /> width = "30" />
  13.             <Mx: DataGridColumn   " Artigo 1 " headerText = "article 1" " 270 " width = "270" " titulo " /> de données = "title" />
  14.             <Mx: DataGridColumn   " Preco " headerText = "Prix" " preco " = de données "prix" " 50 " /> width = "50" />
  15.         </ Mx: les colonnes>
  16.     </ Mx: DataGrid>
  17.     <Mx: Button   " Imprime " label = "Imprimer" " 350 " width = "350" " 0 " horizontalCenter = "0" " 90 " /> verticalCenter = "90" />
  18.    
  19. </ Mx: Application>
Télécharger: testRelatorio.mxml

Nous devrions avoir quelque chose comme:

Parte 3 - testeRelatorio.mxml

Partie 3 - testeRelatorio.mxml

Maintenant manque seulement la lumière de notre impression.

nous avons mis dans notre testeRelatorio.mxml après notre arrayCollection:

  1. d'importation template ; imprimer. modèle;
  2.     d'importation   printing . FlexPrintJob ; mx. impression. FlexPrintJob;
  3.    
  4.     ( source = " print/assets/logo.png " )] [Embed (source = "print / assets / logo.png")]
  5.     privé   var Class logo: Classe
  6.    
  7.     privé   fonction : void print (): void (
  8.        
  9.         var   template = new Modèle: = nouveau modèle modèle;
  10.         visible = false ; modèle. Visible = false;
  11.         modelo ) ; addChild (modèle);
  12.         DOC_HEADER_TEXTO . text = " Exmo. Sr. Antunes Costa \n\n Relatorio resumido das compras por pagar! " ; modèle. DOC_HEADER_TEXTO. text = "Monsieur le Président. M. Costa Antunes \ n \ n rapport de synthèse des achats à payer!";
  13.         DOC_LOGO . source = logotipo ; //convem ser uma imagem já embebida, podemos usar caminho, mas a class é mais rapida a ser carregada e impede que haja falta de foto na impressão. modèle. DOC_LOGO. source = logo / / doit être une image déjà trempé, on peut utiliser chemin, mais la classe est à la charge plus rapidement et d'empêcher qu'il y avait un manque de l'impression photo.
  14.         DOC_TITULO . text = " RELATORIO FALTAS! " modèle. DOC_TITULO. text = "RAPPORT ETE ABSENT!"
  15.         DOC_RODAPE . text = " Listagem de falhas de pagamento. Para mais informações contacte +225 554 25485 " ; modèle. DOC_RODAPE. text = "Liste des défaillances de paiement. Pour plus d'informations, contactez +225 554 25485";
  16.         DOC_CONTEUDO . addChild ( minhaDataGrid ) ; //adicionamos a datagrid como child do nosso conteudo modèle. DOC_CONTEUDO. addChild (minhaDataGrid) / / ajouter le DataGrid comme enfant de notre contenu
  17.         / / Ajouter le modèle de rester dans le stade, invisible.
  18.        
  19.         / / Déclarer le travail d'impression
  20.         var   FlexPrintJob = new d'impression: FlexPrintJob = new ; FlexPrintJob ();
  21.         / / Commencer le travail d'impression
  22.         . start ()) if (printJob. start ())   (
  23.            
  24.         / / Ajouter à notre page pour imprimer
  25.         addObject ( modelo ) ; d'impression. addObject (modèle);
  26.         / / Envoyer le travail à l'imprimante
  27.         send () ; d'impression. send ();
  28.         / / Suppression de notre modèle de la scène
  29.         modelo ) ; removeChild (modèle);
  30.  
  31.             )
  32.        
  33.         )

et de mettre sur notre touche à l'impression, dans le cadre de son étiquette, cliquez sur l'= "print ()";

  1. <Mx: Button " Imprime " label = "Imprimer" " 350 " width = "350" " 0 " horizontalCenter = "0" " 90 " verticalCenter = "90" " imprime() " /> cliquez sur = "print ()" />

Il ya, à l'exception de votre demande et exécuter l'exemple, cliquez sur Imprimer et voir comment il est facile :)

S'ils veulent ils peuvent créer d'autres modèles, une variété de moyens et d'exemples .. et qu'il devrait question et l'ajoute à la phase invisible lorsqu'il n'est pas à gâcher votre demande ... en l'occurrence la datagrid disparaît parce que j'ai changé mon enfant ... ajoutant à la modèle. Si vous souhaitez toujours visible, la création d'un nouveau datagrid égaux en template.mxml avec le nom DOC_DATAGRID et lorsque vous ajoutez la même imprimer le DataProvider:

modelo.DOC_DATAGRID.dataProvider = données;

et voilà!

Astuce. Si vous souhaitez imprimer au format PDF, ou utiliser le AlivePDF ou utiliser un pilote d'Adobe pour ajouter une imprimante au format pdf de qui envoie le travail d'impression pour le conducteur, qui écrit en format pdf.

Ils peuvent voir l'exemple en ligne avec le code source disponible ici

J'espère qu'il sera utile.

Serrer dans ses bras.

version pdf temporairement indisponible.
Laissez un commentaire ou un trackback

11 Commentaires

  1. 7 août 2008 à 6:34 pm | Lien permanent

    Félicitations pour le poste, très informatif, objectif et instructif.

    Observe,

    Silva Developer

  2. 8 août 2008 à 7:47 am | Permalink

    Merci! :)

    Serrer dans ses bras.

  3. 8 septembre 2008 à 1:49 pm | Lien permanent

    Mario très bon! Serrer dans ses bras.

  4. Pedro Neves
    8 octobre 2008 à 7:55 pm | Lien permanent

    Très bon Mario.
    A beaucoup aidé!

  5. Jose Carlos Fonseca
    17 novembre 2008 à 7:06 pm | Lien permanent

    Bonne nuit John,

    Cet exemple est très bon!
    Mais lorsque je clique sur imprimer le PDF et de choisir de ne pas faire quoi que ce soit.
    Elle a constaté que si la ligne de commentaires "modelo.DOC_CONTEUDO.addChild (minhaDataGrid)," l'imprimer!

    Que pourrait-on? J'ai la version 10 de flash, est-il?

    Et d'imprimer sur plusieurs pages, pouvez-vous m'aider?

    Merci.

    Jose Carlos Fonseca
    Géorgie - Portugal

  6. 18 novembre 2008 à 10:09 h am | Permalink

    Mais, comme l'est l'impression? l'aide d'un pilote d'imprimante de l'pdf?

  7. Jose Carlos Fonseca
    18 novembre 2008 à 6:45 pm | Lien permanent

    Oui, lorsque je clique sur le bouton d'impression est l'affichage des imprimantes et choisir le "Adobe PDF", je nom de la doc et confirmer.

    À ce point commence à créer le PDF. Après quelques secondes, cette fenêtre est fermée et j'ai créé le fichier PDF.

    Merci.

    Jose Carlos Fonseca
    Géorgie - Portugal

  8. 18 novembre 2008 à 7:59 pm | Lien permanent

    Bizarre ... essayez d'installer et d'utiliser l'un des pilotes suivants:

    Pilote de l'imprimante PDF995 - http://www.pdf995.com/download.html
    Virtual PDF Printer - http://www.download.com/1770-20_4-0.html?query=Virtual + + PDF Printer & tag = 404 = & searchtype téléchargements
    pdf ou le créateur ou même le cutePdf imprimante sur la même page ...

    contenu d'essai après ce qui s'est passé ....

    Par ailleurs, qui utilisent le système d'exploitation?

  9. Jose Carlos Fonseca
    18 novembre 2008 à 11:44 heures pm | Permalink

    Mario, déjà installé l'imprimante virtuelle PDF et n'a toujours pas.

    La chose étrange est que si je utiliser votre exemple que vous avez sur cette page qui travaille avec l'imprimante que vous aviez.

    Le système d'exploitation est XP Pro

  10. 19 novembre 2008 à 7:14 am | Permalink

    Hmm .. mais nous ne l'avons avant, l'OS n'a rien à voir, vous avez suivi toutes les étapes de détail? Childs ajouté le bien?

    Si tout est correct de ne pas savoir ce qui se passe ... est que cet exemple, c'est que je suis au-dessus fonctionne bien ici ...

    Si vous le pouvez, envoyez-moi le code source pour obtenir un aperçu: admin [at] msdevstudio [point] avec

    cumps

  11. Jose Carlos Fonseca
    19 novembre 2008 à 7:43 pm | Lien permanent

    En fait, le code est exactement ce que vous avez dans l'exemple. Lorsqu'on lui dit que s'il est travaillé je utiliser votre exemple en ligne.

    C'est bien, je ne imprimer le DataGrid, pour l'instant, sans un en-tête ou le pied de page. Merci de toute façon, votre exemple, a beaucoup aidé.

    Profitez de cette occasion pour demander de l'aide sur une autre question, par hasard vous n'avez pas d'exemple dans flex + mysql recherche avancée?

    Merci.

Laisser un commentaire

Votre e-mail n'est jamais publié ou partagé. Les champs obligatoires sont marqués d'un *