2013-09-27 45 views
0
public class Test1{ 
    JTable jTable1; 
    Test1(){ 
     String columns[] = new String[] {"Name","Quantity","Rate","Amount"}; 
     Object data[][]={ 
     {"PEN","10","5","50"}, 
     {"PENCIL","10","3","30"}, 
     {"KEYBOARD AND MOUSE","10","3","30"} 
     }; 
     jTable1 = new JTable(new ExampleTableModel(data,columns)); 
    } 
    public static void main(String h[]){ 
     Test1 t=new Test1(); 
     t.printThisBill(); 
    } 
    public void printThisBill() { 
     TableModel mod = jTable1.getModel(); 
     DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
     DateFormat timeFormat = new SimpleDateFormat("HH:mm"); 
     Date date = new Date(); 
     String Date = dateFormat.format(date); 
     String Time = timeFormat.format(date); 

     double tax=0,amt1=0; 
     String Header = 
     " ****Super Market****  \n" 
     + "Date: "+Date+"  Time: "+Time+"\n" 
     + "---------------------------------\n" 
     + "Name   Qty Rate  Amt\n" 
     + "---------------------------------\n"; 
     String bill = Header; 
     int i =0; 
     do{ 
      String name =  ""+ mod.getValueAt(i, 0); 
      String qty =  ""+mod.getValueAt(i, 1); 
      String rate =  ""+mod.getValueAt(i, 2); 
      String amount = ""+mod.getValueAt(i, 3); 
      if(name.length() > 15){ 
       name = name.substring(0, 15)+" "; 
      } 
      rate = rate; 
      //String items = name+"\t"+qty+"\t"+rate+"\t"+amount+"\n"; 
      String items = name+"\t"+qty+"\t"+rate+"\t"+amount+"\n"; 
      bill = bill+ items; 
      amt1=Double.parseDouble(amount)+amt1; 
      i++; 
     }while(i <= mod.getRowCount()-1); 

     String amt= "\n \n \nTotal Amount = "+amt1+"\n" 
     + "Tax ="+tax+ "\n" 
     + "*********************************\n" 
     + "Thank you. \n"; 
     bill = bill+amt; 
     System.out.println(bill); 
     printCard(bill); 
     //dispose(); 
    } 
    public static void printCard(final String bill){ 
     Printable contentToPrint = new Printable(){ 
      @Override 
      public int print(Graphics graphics, PageFormat pageFormat, int page) throws PrinterException { 
       if (page > 0) { 
        return NO_SUCH_PAGE; 
       } 
       pageFormat.setOrientation(PageFormat.LANDSCAPE); 
       Graphics2D g2d = (Graphics2D)graphics.create(); 
       g2d.setPaint(Color.black); 
       g2d.setFont(new Font("Arial", Font.BOLD, 10)); 
       g2d.translate(pageFormat.getImageableX(),  pageFormat.getImageableX()); 
       g2d.drawString(bill, 0, 0); 
       return PAGE_EXISTS; 
      } 
     }; 

     PrinterJob job = PrinterJob.getPrinterJob(); 
     job.setPrintable(contentToPrint); 
     try { 
      job.print(); 
     } catch (PrinterException e) { 
      System.err.println(e.getMessage()); 
     } 
    } 
} 

我使用的是EPSON TM-81打印机。 我试图通过上面的java代码打印表数据,它给我一些错误。 当我尝试运行此代码时,我收到消息“打印机不接受作业”。 如果您有任何疑问,请发帖用epson -tmt81打印的JAVA代码

回答

1

这是收据打印机。通常情况下,您无法使用Java打印API打印该打印机。您可以测试直接打印到与Java文件的打印机端口I/O:

File windows_pr = new File("LPR:"); 

File linux_pr = new File("/dev/ttyS2"); 

或通用(http://en.wikipedia.org/wiki/JavaPOS)或供应商特定的Java库。

+0

我可以得到示例我正在搜索,但没有得到有用的示例 –

+0

有一些从Epson关于JavaPOS的东西。尝试在这里http://download.epson-biz.com/ – PeterMmm

+0

我下载,但它是补丁,请检查与https://download.epson-biz.com/modules/pos/download.php?fid=4139 –