我是一个菜鸟级Java爱好者,工作与编程风牛马不相及,纯粹是个人爱好。前些天,发现单位打印票据的方法十分原始:往Excel模板填数据然后打印。虽然比手工开具效率提高不少,但仍需要人工统计。我决定用Java + Access解决这个问题。开发中在编写“打印票据”时遇到这样问题,百思不得其解,又搜索不到解决之道,所以想请各位大虾赐教:1、首先在系统(Windows)中定义好了纸张格式(21cm * 10.2cm),并将打印机的牵引送纸设置为自定义的纸张格式;2、PrinterJob.setPrintable不设定PageFormat,打印机走、切纸正常!由于Paper中默认页边距(magin)为72,这就造成了打印区域的高度和宽度不足,票据上的内容打印不完整;3、自定义好Paper(margin:36)并在PrinterJob.setPrintable设定好PageFormat后,票据打印完整!但打印机却按照A4的纸张类型走、切纸。因为打印机是牵引送纸,所以打印一份票据后要按一下“退纸”键完成退纸才能打印下一份,十分麻烦!4、我尝试自定义paper的大小,但即使将高度设为10,打印机仍然按照A4纸张走、切纸。Code:    PrinterJob printJob = PrinterJob.getPrinterJob();    printJob.setJobName("Ticket");    PageFormat pageFormat = printJob.defaultPage();        Paper paper   = new Paper();        double margin = 36, width = paper.getWidth(), height = paper.getHeight(); // height = paper.getHeight() * (10.2 / 27.9); // paper.setSize(width, height);         paper.setImageableArea(margin, margin, width - margin * 2,  height - margin * 2);    pageFormat.setPaper(paper);        printJob.setPrintable(this, pageFormat);    // printJob.setPrintable(this);判断及问题:1、PrinterJob如不设定纸张,程序和打印机应当使用的是设定的纸张类型;1、Page类中默认的页大小为612 * 792点,换算后为21.59cm * 27.94cm,与A4纸张的尺寸相当。虽然自定义了Paper大小及打印区域尺寸,但打印机为何仍按A4纸走、切纸?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【edgedliu】截止到2008-07-14 18:40:26的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html