Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

AIR & alivePDF

Compatible AIR. Cliquer pour en savoir plus sur les compatibilités.Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Par d.exter (Denis Exter), le 03 janvier 2009

Cela peut paraître étonnant, mais actionscript ne permet pas de générer des fichiers .pdf nativement. Dans ce tutoriel nous allons donc voir comment générer des fichiers .pdf à l’aide de AlivePDF ; AlivePDF étant une librairie open-source en actionscript 3 (Flash. Flex, AIR) qui permet de générer des PDF côté client. Elle a été développée par Thibault Imbert sous une license MIT, ce qui signifie que vous pouvez faire à peu près tout ce que vous voulez avec. Vous aurez donc besoin de :

- Adobe Flex Builder, ou de l’extension pour Eclipse. Ils sont téléchargeables sur le site de Adobe (http://www.adobe.com/fr/products/flex/) , vous pouvez également utiliser flashDevelop (http://www.flashdevelop.org)

- la librairie AlivePDF (http://alivepdf.bytearray.org/)

La première chose à faire est de télécharger la dernière version de l’API à l’adresse suivante :

(http://code.google.com/p/alivepdf/downloads/list)

Décompressez l’archive à l’endroit de votre choix.

Nous allons maintenant créer notre projet AIR à l’aide de Flex Builder pour cela il faut cliquer sur le menu « File » –> « New » –> »Flex project », nommer votre projet « PDFGen ».

N’oubliez pas de sélectionner « Desktop application (runs in Adobe AIR) », vous aurez ainsi une application de bureau (AIR).

Il faut ensuite faire un clique droit sur votre projet Flex et ouvrir le panneau des propriétés, puis sélectionner « Library path » dans le panneau des propriétés, et cliquez sur « ADD SWC… », et pointer sur la librairie « AlivePDF.swc » qui se trouve dans le répertoire /bin ou vous avez décompressez l’archive.

Pour commencer nous allons créer une propriété appelée myPDF :

private var myPDF:PDF;

Nous allons ensuite créer notre pdf, avec portrait comme orientation, millimètres comme unités et A4 comme format, utilisez l’intellisense pour voir toutes les options disponibles :

myPDF=new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4)

Maintenant que nous avons créer notre pdf, nous allons lui ajouter une page :

myPDF.addPage() ;

Nous allons mettre une image en en-tête, pour cela nous commençons par la déclarer :

[Embed( source="alivepdf.jpg", mimeType="application/octet-stream" )]
private var jpgIMG:Class;

Puis on l’ajoute au pdf avec la méthode « addImageStream » :

myPDF.addImageStream(jpgIMG() as ByteArray);

Ajoutons un peu de texte, que nous allons placé aux coordonnées x=100 et y=120:

myPDF.setXY( 100, 120);
myPDF.setFont(FontFamily.ARIAL , "", 12);
myPDF.addText("Mon premier pdf généré depuis Adobe AIR avec AlivePDF !",20,60 );

La méthode « addText » permet d’ajouter du texte sur une ligne, pour ajouter du texte sur plusieurs lignes, il faut utiliser la méthode « addMultiCell ».

Nous allons maintenant enregistrer notre pdf sur notre bureau, pour cela on créer une propriété file :

private var file:File;

Et voici le code pour sauvegarder notre pdf en local à l’aide du runtime de AIR:

var f:FileStream=new FileStream();
file=File.desktopDirectory.resolvePath("pdf/myFirstPDF");
f.open(file,FileMode.WRITE);
var bytes:ByteArray=myPDF.save(Method.LOCAL);
f.writeBytes(bytes);
f.close();

Dans la classe « Method », il y a 3 constantes qui sont :

- BASE_64

- LOCAL

- REMOTE

Pour générer le fichier pdf depuis une application online, il faut utiliser la constante « REMOTE », comme ceci :

myPDF.savePDF(Method.REMOTE, “http://yourServer/create.php”, Download.ATTACHMENT, ”MyFirstPDF.pdf”)

Il y a plusieurs exemples de script côté serveur (java, php, C#) dans l’archive que vous avez téléchargée.

Le 3ème paramètre est la façon dont le fichier pdf sera téléchargé :

- INLINE, il s’ouvrira dans le navigateur.

- ATTACHMENT, le navigateur vous proposera de le sauvegarder via une boîte de dialogue.

Dans notre exemple, nous utiliseront la méthode locale.

Vous pouvez également ouvrir votre fichier pdf dans un navigateur avec le code suivant :

var request:URLRequest = new URLRequest( file.url ) ;
navigateToURL(request);

Il y a encore de nombreuses fonctionnalités, je vous conseil de consulté la documentation (http://alivepdf.bytearray.org/alivepdf-asdoc/).

Le code source de ce tuturiel est disponible ici.