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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 批量打印_用java怎样实现批量打印

發布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 批量打印_用java怎样实现批量打印 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

下面是實現Java批量打印功能的具體工具類,其中的Info類和UserClass為具體的快遞面單中要打印的信息e68a8462616964757a686964616f31333363383935,以參數的方式傳遞過來,循環調用Java PrinterJob服務進行打印;這里的快遞尺寸已經調整好,可以使用,如需添加只要根據實際的面單進行調整,也可以專門寫一個接口類的形式來創建快遞面單的尺寸,本人沒有嘗試;如遇問題歡迎留言,共同探討!

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.print.Book;

import java.awt.print.PageFormat;

import java.awt.print.Paper;

import java.awt.print.Printable;

import java.awt.print.PrinterException;

import java.awt.print.PrinterJob;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.swing.JOptionPane;

import com.myprint.model.Info;

import com.myprint.model.UserClass;

public class PrintUtil implements Printable{

/**

* 紙張尺寸

*/

private double width;

private double height;

/**

* 打印起始坐標

*/

private double startX;

private double startY;

//打印頁數

private int pages;

//打印數據坐標

private Map pcoord;

//發件方信息

private SenderInfo info;

//打印數據源

private List sourcelist;

//private int PAGES = 0;

//private PrintPaper printpaper;

private UserObject obj;

public PrintUtil(){}

public PrintUtil(int expkind, UserObject obj, List sourcelist)

{

this.pcoord = this.pcoord == null ? new HashMap() : this.pcoord;

this.pcoord.clear();

this.info = info;

this.sourcelist = sourcelist;

switch(expkind)

{

case 0: //EMS

this.width = 652;

this.height = 360;

this.startX = 30;

this.startY = 80;

this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();

pcoord.put("nameX", 30F);

pcoord.put("nameY", 80F + 30F);

pcoord.put("numX", 30F + 90F);

pcoord.put("numY", 80F + 30F);

pcoord.put("cmpX", 30F);

pcoord.put("cmpY", 80F + 60F);

pcoord.put("addrX", 30F);

pcoord.put("addrY", 80F + 90F);

pcoord.put("RnameX", 30F + 290F);

pcoord.put("RnameY", 80F + 30F);

pcoord.put("RnumX", 30F + 390);

pcoord.put("RnumY", 80F + 30);

pcoord.put("RcmpyX", 30F + 280);

pcoord.put("RcmpyY", 80F + 55);

pcoord.put("RaddrX", 30F + 280);

pcoord.put("RaddrY", 80F + 90);

break;

case 1://順風快遞

this.width = 632;

this.height = 412;

this.startX = 40;

this.startY = 30;

this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();

pcoord.put("nameX", 285F);

pcoord.put("nameY", 126F);

pcoord.put("numX", 200F);

pcoord.put("numY", 185F);

pcoord.put("cmpX", 120F);

pcoord.put("cmpY", 126F);

pcoord.put("addrX", 120F);

pcoord.put("addrY", 145F);

pcoord.put("RnameX", 275F);

pcoord.put("RnameY", 240F);

pcoord.put("RnumX", 200F);

pcoord.put("RnumY", 300F);

pcoord.put("RcmpyX", 130F);

pcoord.put("RcmpyY", 240F);

pcoord.put("RaddrX", 130F);

pcoord.put("RaddrY", 270F);

break;

case 2://申通快遞

this.width = 652;

this.height = 360;

this.startX = 30;

this.startY = 80;

this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();

pcoord.put("nameX", 42F);

pcoord.put("nameY", 100F);

pcoord.put("numX", 62F);

pcoord.put("numY", 200F);

pcoord.put("cmpX", 42F);

pcoord.put("cmpY", 126F);

pcoord.put("addrX", 42F);

pcoord.put("addrY", 155F);

pcoord.put("RnameX", 320F);

pcoord.put("RnameY", 100F);

pcoord.put("RnumX", 330F);

pcoord.put("RnumY", 200F);

pcoord.put("RcmpyX", 310F);

pcoord.put("RcmpyY", 126F);

pcoord.put("RaddrX", 310F);

pcoord.put("RaddrY", 155F);

break;

default:

break;

}

}

/**

* @param Graphic指明打印的圖形環境

* @param PageFormat指明打印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595×842點)

* @param pageIndex指明頁號

**/

public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {

//轉換成Graphics2D

Graphics2D g2 = (Graphics2D) gra;

//設置打印顏色為黑色

g2.setColor(Color.black);

switch(pageIndex){

case 0:

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

g2.setFont(font);//設置字體

//BasicStroke bs_3=new BasicStroke(0.5f);

float[] dash1 = {2.0f};

g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));

g2.drawString(info.getSname() == null ? "" : info.getSname(), pcoord.get("nameX"), pcoord.get("SnameY"));

g2.drawString(info.getSnum() == null ? "" : info.getSnum(), pcoord.get("numX"), pcoord.get("numY"));

g2.drawString(info.getScmp() == null ? "" : info.getScmp(), pcoord.get("cmpX"), pcoord.get("cmpY"));

g2.drawString(info.getSaddr() == null ? "" : info.getSaddr(), pcoord.get("addrX"), pcoord.get("addrY"));

g2.drawString(obj.getRname() == null ? "" : obj.getRname(), pcoord.get("rnameX"), pcoord.get("rnameY"));

g2.drawString(obj.getRnum() == null ? "" : obj.getRnum(), pcoord.get("rnumX"), pcoord.get("rnumY"));

g2.drawString(obj.getRcmpy() == null ? "" : obj.getRcmpy(), pcoord.get("rcmpyX"), pcoord.get("rcmpyY"));

g2.drawString(obj.getRaddr() == null ? "" : obj.getRaddr(), pcoord.get("raddrX"), pcoord.get("raddrY"));

return PAGE_EXISTS;

default:

return NO_SUCH_PAGE;

}

}

// 打印內容到指定位置

public void printContent()

{

if (sourcelist != null && sourcelist.size() > 0) // 當打印內容不為空時

{

//PAGES = printpaper.getSourcelist().size(); // 獲取打印總頁數

// 書、文檔

Book book = new Book();

// 設置成豎打

PageFormat pf = new PageFormat();

pf.setOrientation(PageFormat.PORTRAIT);

// 通過Paper設置頁面的空白邊距和可打印區域。

Paper p = new Paper();

p.setSize(this.width,this.height);//紙張大小

p.setImageableArea(this.startX,this.startY, this.width,this.height);//設置打印區域

pf.setPaper(p);

// 把 PageFormat 和 Printable 添加到書中,組成一個頁面

book.append(this, pf);

//獲取打印服務對象

PrinterJob job = PrinterJob.getPrinterJob();

// 設置打印類

job.setPageable(book);

try {

//直接打印

for(UserObject obj: sourcelist)

{

this.obj= obj;

job.print();

}

//}

} catch (PrinterException e) {

e.printStackTrace();

}

}

else

{

// 如果打印內容為空時,提示用戶打印將取消

JOptionPane.showConfirmDialog(null,

"對不起, 打印內容為空, 打印取消!",

"提示", JOptionPane.DEFAULT_OPTION,

JOptionPane.WARNING_MESSAGE);

}

}

}

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結

以上是生活随笔為你收集整理的java 批量打印_用java怎样实现批量打印的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。