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 (将#修改为@)