Alive PDF LogoAlivePDF ist eine Library zur Erzeugung PDF-Dateien mit Flash, Flex und AIR.

Das Interessante dabei ist, dass diese Open Source Lösung rein client-seitig funktioniert. Es wird also keine spezielle Serverlösung benötigt. In Verbindung mit der Möglichkeit, mithilfe des Flash Player 10 Dateien lokal abzuspeichern, lassen sich problemlos individuelle PDFs aus einer Anwendung erstellen und abspeichern.

AlivePDF hat viele verschiedene Funktionen, um das Layout und die Inhalte von PDFs zu beeinflussen.

Das folgende Beispiel zeigt, wie ein Bildinhalt auf der Flashbühne "abfotografiert" und als Bitmap in die PDF-Datei übertragen wird. Zusätzlich wird ein Text von einem Flash-Textfeld im PDF platziert.

Beispiel

Get Adobe Flash player

Quellcode

Hier der Quellcode der Beispielanwendung.

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. :Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="0xdddddd" horizontalAlign="left">
  3.    
  4.     :Script>
  5.        
  6.            
  7.         import mx.collections.ArrayCollection;
  8.        
  9.         import flash.net.FileReference;
  10.         import flash.utils.ByteArray;
  11.         import mx.graphics.ImageSnapshot;
  12.         import mx.graphics.codec.JPEGEncoder;      
  13.        
  14.         import org.alivepdf.pdf.PDF;
  15.         import org.alivepdf.layout.*;
  16.         import org.alivepdf.display.Display;
  17.         import org.alivepdf.saving.Method;
  18.         import org.alivepdf.fonts.*;
  19.         import org.alivepdf.colors.RGBColor;   
  20.                
  21.         /**
  22.          * PDF Variable von AlivePDF
  23.          */
  24.         public var myPDF:PDF
  25.        
  26.        
  27.         /**
  28.          * Dateinamen der Bilder
  29.          */
  30.         [Bindable]
  31.         private var pictureFiles:ArrayCollection = new ArrayCollection( ['bild0.jpg', 'bild1.jpg', 'bild2.jpg'] );
  32.        
  33.         /**
  34.          * Zaehlvariable fuer Bilder
  35.          */
  36.         [Bindable]
  37.         private var counter:Number = 0;
  38.            
  39.        
  40.         /**
  41.          * PDF erstellen
  42.          */
  43.         public function createPDF():void {   
  44.             setupPDF();
  45.             addAssetsToPDF();
  46.             savePDF();                     
  47.         }
  48.        
  49.         private function setupPDF():void {
  50.            
  51.             // PDF erstellen
  52.             myPDF = new PDF( Orientation.PORTRAIT, Unit.MM, Size.A4 );
  53.                        
  54.             // Zoom auf 100% einstellen
  55.             myPDF.setDisplayMode ( Display.FULL_PAGE );
  56.  
  57.             // Seite hinzufügen
  58.             myPDF.addPage();           
  59.            
  60.         }
  61.        
  62.         private function addAssetsToPDF():void {
  63.            
  64.             // Bild capturen
  65.             myPDF.addImageStream(ImageSnapshot.captureImage(myImage, 0, new JPEGEncoder(85)).data, 10, 10, 150, 100);
  66.            
  67.             // Schriftart und -groesse
  68.             myPDF.setFont ( FontFamily.HELVETICA, Style.NORMAL );
  69.             myPDF.setFontSize ( 16 );
  70.  
  71.             // Text hinzufügen
  72.             myPDF.addMultiCell ( 100, 220, myCustomText.text);
  73.                    
  74.         }
  75.        
  76.         /**
  77.          * PDF lokal abspeichern (ab FP 10)
  78.          */
  79.         private function savePDF():void {                        
  80.             var bytes:ByteArray = myPDF.save( Method.LOCAL);   
  81.             var myFileRef:FileReference = new FileReference();
  82.             myFileRef.save(bytes, "custom.pdf");                   
  83.         }
  84.        
  85.        
  86.         ]]>
  87.        
  88.        
  89.     :Script>
  90.    
  91.         :Image id="myImage" source="{pictureFiles.getItemAt(counter)}" width="500" height="333"  />
  92.        
  93.         :FormItem label="Picture">
  94.             :NumericStepper minimum="0" maximum="2" stepSize="1" id="myNumericStepper" value="@{counter}" />
  95.         :FormItem>
  96.        
  97.         :FormItem label="Text">
  98.             :TextInput text="Individueller Text" id="myCustomText" />
  99.         :FormItem>
  100.    
  101.        
  102.     :Button label="Create PDF" click="createPDF();" />
  103.    
  104. :Application>

Link: code.google.com/p/alivepdf/
Link: AlivePDF Dokumentation