日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java小票_Java编程打印购物小票实现代码

發(fā)布時間:2023/12/15 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java小票_Java编程打印购物小票实现代码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單介紹運行環(huán)境:

語言:Java

工具:eclipse

系統(tǒng):Windows7

(打印設(shè)備暫時沒有,所以只能提供預(yù)覽圖)

最近,項目需要為商城做一個購物小票的打印功能,日常我們?nèi)コ匈I東西,結(jié)賬的時候收銀員都會打印一個小票,一般的商城也都需要這樣的一個小功能,本文給出的 demo 是在 58mm 的熱敏打印機下的例子,如果是其他紙張類型的打印機,調(diào)整紙張寬度即可。

package test;

import java.awt.*;

import java.awt.print.*;

/**

* 打印機測試類(58mm)

* 1、目標打印機必須設(shè)置為默認打印機

* 2、打印頁面的寬度和具體的打印機有關(guān),一般為打印紙的寬度,需要配置成系統(tǒng)參數(shù)

* 3、一個漢字的寬度大概是12點

*/

public class PrintTest {

public static void main(String[] args){

if(PrinterJob.lookupPrintServices().length>0){

/*

打印格式

*/

PageFormat pageFormat = new PageFormat();

//設(shè)置打印起點從左上角開始,從左到右,從上到下打印

pageFormat.setOrientation(PageFormat.PORTRAIT);

/*

打印頁面格式設(shè)置

*/

Paper paper = new Paper();

//設(shè)置打印寬度(固定,和具體的打印機有關(guān))和高度(跟實際打印內(nèi)容的多少有關(guān))

paper.setSize(140, 450);

//設(shè)置打印區(qū)域 打印起點坐標、打印的寬度和高度

paper.setImageableArea(0, 0, 135, 450);

pageFormat.setPaper(paper);

//創(chuàng)建打印文檔

Book book = new Book();

book.append(new Printable() {

@Override

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {

if(pageIndex>0){

return NO_SUCH_PAGE;

}

Graphics2D graphics2D = (Graphics2D) graphics;

Font font = new Font("宋體", Font.PLAIN, 5);

graphics2D.setFont(font);

drawString(graphics2D, "//", 10, 17, 119, 8);

font = new Font("宋體", Font.PLAIN, 7);

graphics2D.setFont(font);

int yIndex = 30;

int lineHeight = 10;

int lineWidth = 120;

Color defaultColor = graphics2D.getColor();

Color grey = new Color(145, 145, 145);

//收貨信息

yIndex = drawString(graphics2D, "收貨人:路人甲", 10, yIndex, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "收貨地址:北京市海淀區(qū)上地十街10號百度大廈", 10, yIndex + lineHeight, lineWidth, lineHeight);

//收貨信息邊框

Stroke stroke = new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,0,new float[]{4, 4},0);

graphics2D.setStroke(stroke);

graphics2D.drawRect(5, 10, 129, yIndex);

//藥店名稱

lineWidth = 129;

lineHeight = 8;

graphics2D.setFont(new Font("宋體", Font.BOLD, 8));

graphics2D.setColor(defaultColor);

yIndex = drawString(graphics2D, "北京藥店零售小票", 5, yIndex + lineHeight + 20, lineWidth, 12);

graphics2D.setFont(new Font("宋體", Font.PLAIN, 6));

graphics2D.setColor(grey);

yIndex = drawString(graphics2D, "操作員:小清新", 5, yIndex + lineHeight + 2, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "日期:2017-01-05", 5 + lineWidth/2, yIndex, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "品名", 5, yIndex + lineHeight * 2 - 5, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "規(guī)格", (lineWidth/10)*4, yIndex, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "單價", (lineWidth/10)*8, yIndex, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "數(shù)量", (lineWidth/10)*10, yIndex, lineWidth, lineHeight);

for (int i=0; i<5; i++){

graphics2D.setFont(new Font("宋體", Font.PLAIN, 7));

yIndex = drawString(graphics2D, "E復(fù)合維生素B片100片E復(fù)合維生素B片100片", 5, yIndex + 15, (lineWidth/10)*7, 10);

graphics2D.setFont(new Font("宋體", Font.PLAIN, 6));

graphics2D.setColor(grey);

yIndex = drawString(graphics2D, "100片/盒", 5, yIndex + 11, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "14.50", (lineWidth/10)*8, yIndex, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "2", (lineWidth/10)*10, yIndex, lineWidth, lineHeight);

graphics2D.setFont(new Font("宋體", Font.PLAIN, 7));

yIndex = yIndex + 2;

graphics2D.drawLine(5, yIndex, 5 + lineWidth, yIndex);

}

graphics2D.setColor(defaultColor);

yIndex = drawString(graphics2D, "會員名稱:小清新", 5, yIndex + lineHeight * 2, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "總 數(shù):6", 5, yIndex + lineHeight, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "總 計:55.30", 5, yIndex + lineHeight, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "收 款:100.00", 5, yIndex + lineHeight, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "找 零:44.70", 5, yIndex + lineHeight, lineWidth, lineHeight);

graphics2D.setFont(new Font("宋體", Font.PLAIN, 6));

graphics2D.setColor(grey);

yIndex = drawString(graphics2D, "電話:020-123456", 5, yIndex + lineHeight * 2, lineWidth, lineHeight);

yIndex = drawString(graphics2D, "地址:北京市海淀區(qū)上地十街10號百度大廈", 5, yIndex + lineHeight, lineWidth, lineHeight);

yIndex = yIndex + 20;

graphics2D.drawLine(0, yIndex, 140, yIndex);

return PAGE_EXISTS;

}

}

, pageFormat);

//獲取默認打印機

PrinterJob printerJob = PrinterJob.getPrinterJob();

printerJob.setPageable(book);

try {

printerJob.print();

}

catch (PrinterException e) {

e.printStackTrace();

System.out.println("打印異常");

}

} else{

System.out.println("沒法發(fā)現(xiàn)打印機服務(wù)");

}

}

/**

* 字符串輸出

* @param graphics2D 畫筆

* @param text 打印文本

* @param x 打印起點 x 坐標

* @param y 打印起點 y 坐標

* @param lineWidth 行寬

* @param lineHeight 行高

* @return 返回終點 y 坐標

*/

private static int drawString(Graphics2D graphics2D, String text, int x, int y, int lineWidth, int lineHeight){

FontMetrics fontMetrics = graphics2D.getFontMetrics();

if(fontMetrics.stringWidth(text)

graphics2D.drawString(text, x, y);

return y;

} else{

char[] chars = text.toCharArray();

int charsWidth = 0;

StringBuffer sb = new StringBuffer();

for (int i=0; i

if((charsWidth + fontMetrics.charWidth(chars[i]))>lineWidth){

graphics2D.drawString(sb.toString(), x, y);

sb.setLength(0);

y = y + lineHeight;

charsWidth = fontMetrics.charWidth(chars[i]);

sb.append(chars[i]);

} else{

charsWidth = charsWidth + fontMetrics.charWidth(chars[i]);

sb.append(chars[i]);

}

}

if(sb.length()>0){

graphics2D.drawString(sb.toString(), x, y);

y = y + lineHeight;

}

return y - lineHeight;

}

}

}

運行結(jié)果:

效果預(yù)覽:

總結(jié)

簡單說就是編寫一段Java程序,將輸出結(jié)果另存為“?*.xps? ”格式文件,由打印機輸出,非常簡單。希望對大家有所幫助。如有問題歡迎留言指出。感謝朋友們對本站的支持。

總結(jié)

以上是生活随笔為你收集整理的java小票_Java编程打印购物小票实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。