问题描述
我正在使用 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 (将#修改为@)