Проблема с Adobe Air Printjob

Я делаю настольную игру с Adobe Air, которая использует задание на печать для печати игрового билета на pos-принтере. У меня есть две проблемы:1- качество печати билетов очень плохое 2- я не могу распечатать длинный билет, потому что он разрежет билет на принтере на несколько частей, когда билет длинный.

Я использовал эти коды:

      import flash.geom.Rectangle;
import flash.printing.PrintJob;
import flash.printing.PrintJobOrientation;
import flash.printing.PaperSize;
import flash.printing.PrintUIOptions;
import flash.printing.PrintMethod;
import flash.printing.PrintJobOptions;
import flash.events.Event;

var pj:PrintJob;
function onPrintClick(event:MouseEvent):void
{   
    MovieClip(this).visible = true;
    
    var options:PrintJobOptions = new PrintJobOptions(); 
    options.printAsBitmap = true;  
    options.printMethod = PrintMethod.BITMAP;
    options.pixelsPerInch = 300;
    
    pj = new PrintJob();
    pj.selectPaperSize(PaperSize.LEGAL);
    pj.printer = MovieClip(root).menuScreen.printer; 
    pj.orientation = PrintJobOrientation.PORTRAIT;
    
    var uiOpt:PrintUIOptions = new PrintUIOptions();
     uiOpt.minPage = 1;
     uiOpt.maxPage = 1000;
    
    if(pj.start2(uiOpt, false))
    {           
        var myScale:Number=0;
        myScale = pj.pageWidth/ticket.width;
        
        ticket.scaleX = ticket.scaleY = myScale;
        var realW:Number = pj.pageWidth/myScale;
        var realH:Number = pj.pageHeight/myScale;       
        
        trace(ticket.width,ticket.height);
        trace(pj.pageWidth,pj.pageHeight);
        trace(realW,realH);
        
        var scaleDif:Number = realW/ticket.width;
        var pageH:Number = realH/scaleDif;      
        
        var pagesNum:int = Math.ceil(ticket.height/pageH);
         
         var pageCounter:int=0;
         var printArea:Rectangle;
         for(var i:int=0;i<pagesNum;i++)
         {
            printArea = new Rectangle(0, i*realH, realW, realH);
            try {
                pj.addPage(ticket,printArea,options);
                pageCounter++;
                
                MovieClip(root).preloader(false);
                MovieClip(root).preloading.tt.text = '';
            }
            catch(e:Error) {
                // do nothing
            } 
         }
        
        if(pageCounter==pagesNum)
        {               
            pj.send();      
            
            pj = null;          
        }       
    }

    ticket.scaleX=1;        
    ticket.scaleY=1;
    
    MovieClip(this).visible = false;    
}

Я надеюсь, что есть способ получить длинный отпечаток без обрезки.

0 ответов

Другие вопросы по тегам