微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Adobe Air Printjob 问题

如何解决Adobe Air Printjob 问题

我正在使用 Adob​​e Air 制作桌面游戏,该游戏使用打印作业在 pos 打印机中打印游戏票。我有两个问题: 1-打印票质量太差 2- 我无法打印长票,因为当票很长时,它会将打印机上的票切成几块。

enter image description here

我使用了这个代码

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;    
}

我希望有一种方法可以在不切碎的情况下打印出长版。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。