读书人

[转]是1多分打印的

发布时间: 2012-09-01 09:33:02 作者: rapoo

[转]是一多分打印的
http://bbs.9ria.com/viewthread.php?tid=101119&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

package org{     import flash.display.MovieClip;     import flash.printing.PrintJob;     import flash.printing.PrintJobOrientation;     import flash.display.Stage;     import flash.display.Sprite;     import flash.text.TextField;     import flash.geom.Rectangle;         import flash.text.TextFormat;        /**         * ...         * @author vinson         * 是一多分打印的,只有一公用方法setPrint         * 以A4,12字每60行字算,如果是170行字就自打印成三容         */    public class PrintMultiplePages extends MovieClip     {                 private var sheetBox:Array;                private var sheet:Sprite;        public function PrintMultiplePages():void         {                        init();        }                 private function init():void                {                        sheetBox=new Array;                }                public function setPrint(allStr:String):void                {                        var txt:TextField = createText();            txt.text = allStr;                        trace(txt.numLines)                        var limitLine:int = 60;//限制每60行                        var allPages:int= Math.ceil(txt.numLines / limitLine)//的有                        var remainder:int = txt.numLines % limitLine;//最後一不是60行而是下的行                        for (var i:int = 0; i < allPages; i++)                        {                                var sheet:Sprite = new Sprite();                                var tempStr:String="";                                var tempLine:int = limitLine * i                                if (i != allPages-1)                                {                                        for (var j:int = tempLine; j < tempLine + limitLine;j++)                                        {                                                tempStr+= txt.getLineText(j);                                        }                                }                                else                                {                                        for (j = tempLine; j < tempLine + remainder-1;j++)                                        {                                                tempStr+= txt.getLineText(j);                                        }                                                                        }                                trace(i,tempStr)                                createSheet(sheet, tempStr);                                sheetBox.push(sheet)                        }                                                printPages();                }         private function createSheet(sheet:Sprite, str:String):void         {             sheet.graphics.beginFill(0xFFFFFF);             sheet.graphics.lineStyle(1, 0xFFFFFF);             sheet.graphics.drawRect(0, 0, 787, 1092);             sheet.graphics.endFill();                         var txt:TextField = createText();            txt.text = str;            sheet.addChild(txt);                        //this.addChild(sheet)        }                 private function createText():TextField                {                        var txtFormat:TextFormat = new TextFormat;                        txtFormat.leftMargin = 2;                        txtFormat.rightMargin = 60;                                    var txt:TextField = new TextField();                        txt.defaultTextFormat = txtFormat;                        txt.wordWrap = true;                         txt.multiline = true;            txt.height = 1090;             txt.width = 650;                        return txt;                }        private function printPages():void         {             var pj:PrintJob = new PrintJob();             var pagesToPrint:uint = 0;             if (pj.start())             {                 if (pj.orientation == PrintJobOrientation.LANDSCAPE)                 {                     throw new Error("Page is not set to an orientation of portrait.");                 }                                 for (var i:int = 0; i < sheetBox.length; i++)                                {                                        var sheet:Sprite=sheetBox[i]                                        try                                         {                                                 pj.addPage(sheet);                                                 pagesToPrint++;                                         }                                         catch (error:Error)                                         {                                                 // Respond to error.                                         }                                }                if (pagesToPrint > 0)                 {                     pj.send();                 }             }         }     } }

读书人网 >Web前端

热点推荐