欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java編程打印購(gòu)物小票實(shí)現(xiàn)代碼

簡(jiǎn)單介紹運(yùn)行環(huán)境:

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比弓長(zhǎng)嶺網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式弓長(zhǎng)嶺網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋弓長(zhǎng)嶺地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴(lài)。

語(yǔ)言:Java

工具:eclipse

系統(tǒng):Windows7

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

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

package test;
import java.awt.*;
import java.awt.print.*;
/**
 * 打印機(jī)測(cè)試類(lèi)(58mm)
 * 1、目標(biāo)打印機(jī)必須設(shè)置為默認(rèn)打印機(jī)
 * 2、打印頁(yè)面的寬度和具體的打印機(jī)有關(guān),一般為打印紙的寬度,需要配置成系統(tǒng)參數(shù)
 * 3、一個(gè)漢字的寬度大概是12點(diǎn)
 */
public class PrintTest {
	public static void main(String[] args){
		if(PrinterJob.lookupPrintServices().length>0){
			/*
        打印格式
       */
			PageFormat pageFormat = new PageFormat();
			//設(shè)置打印起點(diǎn)從左上角開(kāi)始,從左到右,從上到下打印
			pageFormat.setOrientation(PageFormat.PORTRAIT);
			/*
        打印頁(yè)面格式設(shè)置
       */
			Paper paper = new Paper();
			//設(shè)置打印寬度(固定,和具體的打印機(jī)有關(guān))和高度(跟實(shí)際打印內(nèi)容的多少有關(guān))
			paper.setSize(140, 450);
			//設(shè)置打印區(qū)域 打印起點(diǎn)坐標(biāo)、打印的寬度和高度
			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, "http://////////////////////////////", 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號(hào)百度大廈", 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);
					//藥店名稱(chēng)
					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, "單價(jià)", (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, "會(huì)員名稱(chēng):小清新", 5, yIndex + lineHeight * 2, lineWidth, lineHeight);
					yIndex = drawString(graphics2D, "總  數(shù):6", 5, yIndex + lineHeight, lineWidth, lineHeight);
					yIndex = drawString(graphics2D, "總  計(jì):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號(hào)百度大廈", 5, yIndex + lineHeight, lineWidth, lineHeight);
					yIndex = yIndex + 20;
					graphics2D.drawLine(0, yIndex, 140, yIndex);
					return PAGE_EXISTS;
				}
			}
			, pageFormat);
			//獲取默認(rèn)打印機(jī)
			PrinterJob printerJob = PrinterJob.getPrinterJob();
			printerJob.setPageable(book);
			try {
				printerJob.print();
			}
			catch (PrinterException e) {
				e.printStackTrace();
				System.out.println("打印異常");
			}
		} else{
			System.out.println("沒(méi)法發(fā)現(xiàn)打印機(jī)服務(wù)");
		}
	}
	/**
   * 字符串輸出
   * @param graphics2D  畫(huà)筆
   * @param text     打印文本
   * @param x       打印起點(diǎn) x 坐標(biāo)
   * @param y       打印起點(diǎn) y 坐標(biāo)
   * @param lineWidth   行寬
   * @param lineHeight  行高
   * @return 返回終點(diǎn) y 坐標(biāo)
   */
	private static int drawString(Graphics2D graphics2D, String text, int x, int y, int lineWidth, int lineHeight){
		FontMetrics fontMetrics = graphics2D.getFontMetrics();
		if(fontMetrics.stringWidth(text)<lineWidth){
			graphics2D.drawString(text, x, y);
			return y;
		} else{
			char[] chars = text.toCharArray();
			int charsWidth = 0;
			StringBuffer sb = new StringBuffer();
			for (int i=0; i<chars.length; 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;
		}
	}
}

運(yùn)行結(jié)果:

Java編程打印購(gòu)物小票實(shí)現(xiàn)代碼

效果預(yù)覽:

Java編程打印購(gòu)物小票實(shí)現(xiàn)代碼

總結(jié)

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

網(wǎng)頁(yè)名稱(chēng):Java編程打印購(gòu)物小票實(shí)現(xiàn)代碼
URL分享:http://aaarwkj.com/article2/igoeoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、、云服務(wù)器商城網(wǎng)站、關(guān)鍵詞優(yōu)化、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
国产高清内射一级一片高清视频| 国产黄片大秀在线观看| 午夜激情视频免费国产| 国产精品一区二区三区熟女| 亚洲二区中文字幕在线观看| 麻豆精品情欲人妻二区| 能在线播放的国产三级| 久久偷拍女生厕所尿尿| 国内激情自拍偷拍视频| 国产老太婆精品久久久久| 91午夜福利视频鉴赏| 日本亚洲精品一区二区三| 福利午夜福利在线观看| 一区二区亚洲成人精品| 欧美日韩一区二区三区666| 丰满少妇在线观看网站| 日韩久久精品免费视频| 有码精品视频在线观看| 三级精品一区二区三区| 在线观看91高清视频| 欧美成人精品三级一二| 欧美日韩性生活视频在线| 亚洲女人天堂av在线| 国产精品九九久久精品女同| 日韩中文字幕乱码一区| 夫妻性生活黄色录像视频| 国产精品久久99一区| 国产精品一区二区三区久久| 巴西老熟女大奶子多毛逼| 国产午夜视频在线观看一区| 日韩成人在线视频观看| 国产精品国产三级区别| 日韩在线不卡播放视频| 杨幂一区二区在线观看| 亚洲男人天堂在线视频| 国内精品老年人视频网站| 亚洲欧美日韩在线第三页| 大香蕉欧美视频伊在线| 亚洲欧美日韩国产一区| 91超碰这里只有精品国产| 欧美一区二区专区在线|