1

I've created a form that has lines, static text, and textFields in Flash Professional CS5.5, and using Actionscript 3.0 created fields that accepts a user's inputs and then calculates those user inputs and stores them in fields the user cannot edit. I need to print the filled-in form as a PDF and am using AlivePDF for this. The script creates the PDF but it is blank. How to I capture the entire stage as a PDF?

Here's the code in the .as file.

package  {
        // Flash imports
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        import flash.display.SimpleButton;
        import flash.text.*;
        import fl.controls.CheckBox;
        import fl.accessibility.CheckBoxAccImpl; 
        import fl.controls.Button;
        import flash.filesystem.File;
        import flash.filesystem.FileStream;
        import flash.net.FileReference;
        import flash.net.FileReferenceList;
        //import flash.display.Sprite;
        import flash.media.CameraRoll;
        import flash.display.StageScaleMode;
        import flash.media.MediaPromise;
        import flash.events.MediaEvent;
        import flash.events.Event;

        //AlivePDF imports
        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;
        import org.alivepdf.fonts.FontFamily;
        import org.alivepdf.fonts.Style;
        import org.alivepdf.colors.RGBColor;
        import org.alivepdf.images.ImageFormat;
        import org.alivepdf.saving.Download;
        import org.alivepdf.layout.Layout;

        public class mfDataCollection extends MovieClip {

            public function mfDataCollection() {
                init();
            }

            private function init():void {
                CheckBoxAccImpl.enableAccessibility();
                stage.focus = testDate;
                focusRect  = testDate;
                testDate.tabIndex = 1;  
                outsideTemp.tabIndex = 2; 
                buildingNumber.tabIndex = 3; 
                unitNumber.tabIndex = 4; 
                CAZ1AmbientCO.tabIndex = 5; 
                CAZ1Doors.tabIndex = 6; 
                CAZ1Fireplace.tabIndex = 7; 
                CAZ1CombustionAppliances.tabIndex = 8; 
                CAZ1Baseline.tabIndex = 9; 
                CAZ1Baseline.restrict = "-9-9";
                CAZ1Dryer.tabIndex = 10;
                CAZ1Dryer.restrict = "-9-9";
                CAZ1CheckUnderDoors.tabIndex = 11;
                CAZ1CheckUnderDoors.restrict = "-9-9";
                CAZ1AirHandler.tabIndex = 12;
                CAZ1AirHandler.restrict = "-9-9";
                CAZ1RecheckPressure.tabIndex = 13;
                CAZ1RecheckPressure.restrict = "-9-9";
                CAZ1SetToWC.tabIndex = 14;
                CAZ1WC.tabIndex = 15;
                CAZ1BaselineCopy.tabIndex = 15;
                CAZ1WCD.tabIndex = 16;
                CAZ1DepressurizationLimitsPassed.tabIndex = 17;
                CAZ1Monoxer.tabIndex = 18;
                CAZ1App1SmallestBTU.tabIndex = 19;
                CAZ1App1SpilliagePassed.tabIndex = 20;
                CAZ1App1AmbientCO2.tabIndex = 21;
                CAZ1App1AmbientCO2.restrict = "-9-9";
                CAZ1App1Draft.tabIndex = 22;
                CAZ1App1Draft.restrict = "-9-9";
                CAZ1App1DraftPassed.tabIndex = 23;
                CAZ1App1SpillageFailed.tabIndex = 24;
                CAZ1App1UndilutedCO.tabIndex = 25;
                CAZ1App1UndilutedCO.restrict = "-9-9";
                CAZ1App1ActionLevelsPassed.tabIndex = 26;
                CAZ1CompleteApp2.tabIndex = 27;
                CAZ1App2TestRequired.tabIndex = 28;
                ResetHousetoNormal.tabIndex = 29;
                OvenCO.tabIndex = 30;
                OvenCO.restrict = "0-9";
                LeftRearBurner.tabIndex = 31;
                LeftRearBurner.restrict = "0-9";
                LeftFrontBurner.tabIndex = 32;
                LeftFrontBurner.restrict = "0-9";
                RightFrontBurner.tabIndex = 33;
                RightFrontBurner.restrict = "0-9";
                RightRearBurner.tabIndex = 34;
                RightRearBurner.restrict = "0-9";
                RightFrontBurner.tabIndex = 35;
                CAZ1Dimensions.tabIndex = 36;
                CAZ2Dimensions.tabIndex = 37;
                GasLeakTestingPassed.tabIndex = 38;
                Notes.tabIndex = 39;
                IOUWorkOrder.tabIndex = 40;


                // Setup handlers for mouse clicks
                CAZ1Dryer.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1CheckUnderDoors.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1AirHandler.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1RecheckPressure.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1WC.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1BaselineCopy.addEventListener(MouseEvent.CLICK, handleMouseClicks);
                CAZ1WCD.addEventListener(MouseEvent.CLICK, handleMouseClicks);
            }

            private function handleMouseClicks(event:MouseEvent):void {

                var numCAZ1Baseline:Number = Number(CAZ1Baseline.text);
                var numCAZ1Dryer:Number = Number(CAZ1Dryer.text);
                var numCAZ1CheckUnderDoors:Number = Number(CAZ1CheckUnderDoors.text);
                var numCAZ1AirHandler:Number = Number(CAZ1AirHandler.text);
                var numCAZ1RecheckPressure:Number = Number(CAZ1RecheckPressure.text);
                var numCAZ1WC:Number = Number(CAZ1WC.text);
                var numCAZ1BaselineCopy:Number = numCAZ1Baseline;

                numCAZ1WC = Math.min(numCAZ1Dryer, numCAZ1CheckUnderDoors, numCAZ1AirHandler, numCAZ1RecheckPressure);
                CAZ1WC.text = String(numCAZ1WC);
                CAZ1BaselineCopy.text = String(numCAZ1BaselineCopy);
                var numCAZ1WCD:Number = Number(CAZ1WCD.text);
                numCAZ1WCD = numCAZ1WC - numCAZ1Baseline;
                CAZ1WCD.text = numCAZ1WCD.toFixed(1);
            }

            private function handleButtonClicks(event:MouseEvent):void {
                trace("You have clicked: " + event.currentTarget.name);
                var filename:String; // = "CAZ_Bldg-" + buildingNumber.text + "-" + unitNumber.text + ".pdf";
                var myPDF:PDF;
                switch (event.currentTarget.name) {
                    case "btnSaveAsFileButton":
                        exportPDF();
                        break;
                    default:
                        trace("You clicked something else");

                }
            }

            public function exportPDF() : void {
                var filename:String = "CAZ_Bldg-" + buildingNumber.text + "-" + unitNumber.text + ".pdf";
                trace("You are saving " + filename);
                var myPDF = new PDF(Orientation.PORTRAIT, Unit.INCHES, Size.A4);
                myPDF.setDisplayMode (Display.FULL_PAGE, Layout.SINGLE_PAGE);
                myPDF.addPage();
                var f:FileStream = new FileStream();
                        var file:File = File.userDirectory.resolvePath( filename );
                f.open( file, FileMode.WRITE);
                var bytes:ByteArray = myPDF.save(Method.LOCAL);
                f.writeBytes(bytes);
                f.close();
            }

        } // End of mfDataCollecion class

    } // End of package
  • I think you actually should recreate what you want to put in PDF doc using the AlivePDF API e.g. myPDF.addCell... – Lukasz 'Severiaan' Grela Jan 02 '14 at 13:09
  • [Alive PDF API NOTES](http://code.google.com/p/alivepdf/wiki/APINotes) – Lukasz 'Severiaan' Grela Jan 02 '14 at 13:21
  • The whole point of AlivePDF was to create a PDF based on what on the stage. Or am I missing somehing? I created the form on the stage in Flash. AlivePDF should be able to capture what's on the stage and save it as a PDF. It save as a PDF but a blank PDF. Having to define each line, static text, and textfield, checkox, or dropbox isn't exactly making my life easier. That's like asking me to write my own package from scratch. How do I do what I want to to do using the Flash stage without manually coding the entire form? –  Jan 03 '14 at 02:06
  • I think you misunderstand the AlivePDF it is to create PDF using flash and not PDF from SWF:) I think you can print the "stage" to bitmap and then add that bitmap to PDF page but better option is to recreate your stage layout using given API – Lukasz 'Severiaan' Grela Jan 03 '14 at 11:57
  • Using Flash how exactly? What is AlivePDF actually saving. I thinking maybe I am missing something. So are you saying I need to recreate the form and the data input fields (text fields, drop downs, and checkboxes when I want to save the document? Not much help on this library and what help that is out there seems outdated. I've been trying all day to simply draw a rectangle and write some text to a PDF file created with AlivePDF with no luck. Any help would be greatly appreciated, –  Jan 03 '14 at 22:38

0 Answers0