// Useful Resources // http://alivepdf.bytearray.org/ // http://blog.unthinkmedia.com/2008/09/05/exporting-pdfs-in-flex-using-alivepdf/ // http://blog.juanbonfante.com/?p=272 // http://lucamezzalira.com/2009/02/28/create-pdf-in-runtime-with-actionscript-3-alivepdf-zinc-or-air-flex-or-flash/ package { import flash.display.Sprite; import flash.events.Event; import flash.net.FileReference; import flash.utils.ByteArray; import org.alivepdf.pdf.PDF; import org.alivepdf.layout.Orientation; import org.alivepdf.layout.Size; import org.alivepdf.layout.Unit; import org.alivepdf.display.Display; import org.alivepdf.saving.Method; [SWF(width = '540', height = '790', backgroundColor = '#FFFFFF', frameRate = '25')] public class Main extends Sprite { private var _mySprite:Sprite; private var myPDF:PDF; private var _pdfFilename:String = "drawing.pdf"; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); _mySprite = new Sprite(); drawCrossBox(_mySprite, 540, 790, 0, 0, 0xCCCCCC, 1, 1, 0x000000, 1); addChild(_mySprite); generatePDF(); } private function generatePDF():void { myPDF = new PDF(Orientation.PORTRAIT, Unit.MM, Size.A4); myPDF.setDisplayMode(Display.FULL_WIDTH); myPDF.addPage(); myPDF.addImage(_mySprite); var fileReference:FileReference = new FileReference(); var byteArray:ByteArray = myPDF.save(Method.LOCAL); fileReference.save(byteArray, _pdfFilename); } private function drawCrossBox($sprite:Sprite, $width:int=100, $height:int=100, $x:int=0, $y:int=0, $bgColor:uint=0xFFFFFF, $bgAlpha:Number=1, $lineThickness:Number=1, $lineColor:uint=0x000000, $lineAlpha:Number=1):void { $sprite.graphics.beginFill($bgColor, $bgAlpha); $sprite.graphics.drawRect($x, $y, $width, $height); $sprite.graphics.endFill(); $sprite.graphics.lineStyle($lineThickness, $lineColor, $lineAlpha); $sprite.graphics.moveTo($x,$y); $sprite.graphics.lineTo($x+$width, $y); $sprite.graphics.lineTo($x+$width, $y+$height); $sprite.graphics.lineTo($x, $y+$height); $sprite.graphics.lineTo($x, $y); $sprite.graphics.lineTo($x+$width, $y+$height); $sprite.graphics.moveTo($x+$width, $y); $sprite.graphics.lineTo($x, $y+$height); } } }