IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Générer un PDF depuis une application Flex


Sujet :

Flex

  1. #1
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut Générer un PDF depuis une application Flex
    Bonjour à tous,

    Pour avoir pas mal cherché il n'est pas facile de trouver un code en Flex 3 (complet et qui fonctionne) sur le net alors j'en profite pour mettre le mien au complet (* il faudra joindre au projet la librairie AlivePDF disponible ici).

    Voici le code complet qui permet de créer un pdf depuis une application Flex en s'aidant de quelques lignes de php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600">	
     
    	<mx:Script>
    		<![CDATA[
     
    			import org.alivepdf.colors.RGBColor;
    			import org.alivepdf.data.Grid;
    			import org.alivepdf.data.GridColumn;
    			import org.alivepdf.drawing.Joint;
    			import org.alivepdf.fonts.*;
    			import org.alivepdf.layout.*;
    			import org.alivepdf.pdf.PDF;
    			import org.alivepdf.saving.Download;
    			import org.alivepdf.saving.Method;
     
    			public static const CELL_COLOR:RGBColor = new RGBColor(0);
    			public static const BORDER_COLOR:RGBColor = new RGBColor(0x0);
    			public static const HEADER_COLOR:RGBColor = new RGBColor(0x666666);
    			public static const BACKGROUND_COLOR:RGBColor = new RGBColor(0xCCCCCC);
     
    			[Bindable]
    			private var provider:Array = [
    							{Prénom:'Anthony', Nom:'test1'},
    							{Prénom:'David', Nom:'test2'},
    							{Prénom:'Pierre', Nom:'test3'},
    							{Prénom:'Sébastien', Nom:'test4'}
    						];
     
    			public function generatePDF():void
    			{
    				var pdf:PDF = new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4);
    				var grid:Grid;
     
    				grid = new Grid(provider, 0, 0, HEADER_COLOR, BACKGROUND_COLOR, CELL_COLOR, false, BORDER_COLOR, 1, Joint.MITER);
    				grid.columns = [new GridColumn("Prénom", "Prénom", 50), new GridColumn("Nom", "Nom", 50)];
     
    				//pdf.setDisplayMode(Display.DEFAULT, Layout.SINGLE_PAGE);
     
    				pdf.addPage();
    				pdf.textStyle(new RGBColor(0), 1);
     
    				//DEFINITION D'UNE POLICE POUR LE TITRE
    				pdf.setFont(FontFamily.ARIAL , Style.BOLD, 20);
    				pdf.addText('Ceci est un titre.', 10, 20);
     
    				//REDEFINIR POLICE POUR LA GRID
    				pdf.setFont(FontFamily.ARIAL, Style.NORMAL, 10);
    				pdf.addGrid(grid, 0, 20);
     
    				pdf.save(Method.REMOTE, "http://localhost/create.php", Download.INLINE, "test.pdf");
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Button label="Générer PDF" click="generatePDF()"/>
    	<mx:DataGrid dataProvider="{provider}"/>
    </mx:Application>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
     
    $method = $_GET['method'];
    $name = $_GET['name'];
     
    if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] ))
    {       
            // get bytearray
            $pdf = $GLOBALS["HTTP_RAW_POST_DATA"];
            
            // add headers for download dialog-box
            header('Content-Type: application/pdf');
            header('Content-Length: '.strlen($pdf));
            header('Content-disposition:'.$method.'; filename="'.$name.'"');
            echo $pdf;
            
    }  else echo 'An error occured.';
     
    ?>
    J'ai quand même une question...
    C'est quand même malheureux de devoir passer pas un serveur php juste pour retourner une variable postée (HTTP_RAW_POST_DATA) décorée de trois header non ??

    N'y aurait il pas moyen de s'en passer ?
    Ou bien il y a un truc qui m'échappe ou bien le code php ne fait bel et bien rien d'autre que de retourner la variable HTTP_RAW_POST_DATA décorée de trois header ??

    Merci pour vos avis !

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Bonjour,

    normalement c'est possible avec le FP10, il faut tester pour voir si le résultat est le même qu'en passant par PHP.

    il faut d'abord récupérer le PDF dans un ByteArray avec la méthode save avec le paramètre Method.LOCAL.
    ensuite utiliser la classe FileReference et sa méthode save.

  3. #3
    Membre habitué Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Points : 162
    Points
    162
    Par défaut
    Bonsoir,

    merci pour ton aide.
    Donc de ce que j'ai compris, tu proposes quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	var ba:ByteArray = pdf.save(Method.LOCAL);
     
    	var file:FileReference = new FileReference;
    	file...
    Ensuite tu reparles de la méthode save mais je ne vois pas comment l'utiliser et où cela conduit. Tu peux m'éclairer ?
    Merci pour ton aide.

    Anthony.

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    le code qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file.save(bytes, "test.pdf");
    ça ouvre une fenêtre qui permet à l'utilisateur de choisir l'emplacement pour enregistrer le PDF généré.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Salut!Votre code est bien,mais je fais la même chose sans passer comme cela.En effet vous pouvez utilisez simplement votre code d'impression voir printJob. Et vous installez le logiciel PDFCreator au préalable sur votre machine. Quand un utilisateur décide d'imprimer le système va lui proposer les imprimantes dont il a accès, en choisissant l'imprimante de PDFCreator le résultat est forcement un fichier PDF. Les données à imprimer sont imprimer mais dans un fichier PDF.

Discussions similaires

  1. [Débutant] PDF et Mail depuis une application wpf
    Par Anthony_C dans le forum Développement Windows
    Réponses: 0
    Dernier message: 27/08/2014, 17h11
  2. [PDF] Générer un PDF depuis une page PHP
    Par maaxxx dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 13/07/2011, 14h28
  3. Générer un fichier PDF depuis une application?
    Par xsmokingbenx dans le forum Android
    Réponses: 0
    Dernier message: 19/04/2011, 10h51
  4. [XSL-FO] Générer un PDF depuis une source XML
    Par Ildegarde dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/01/2010, 14h03
  5. [FPDF] comment générer du pdf depuis une page web
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 02/11/2006, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo