如何解决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;
}
我希望有一种方法可以在不切碎的情况下打印出长版。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。