一個可以在針式打印機上打印的Java樣例
阿新 • • 發佈:2017-11-29
exceptio s2d str 接口 draw void exception println 入口
代碼:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
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;
public class Print implements Printable {
private int pageSize;//打印的總頁數
private double paperW=0;//打印的紙張寬度
private double paperH=0;//打印的紙張高度
//實現java.awt.print.Printable接口的打印方法
//pageIndex:打印的當前頁,此參數是系統自動維護的,不需要手動維護,系統會自動遞增
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex >= pageSize)
//退出打印
return Printable.NO_SUCH_PAGE;
else {
Graphics2D g2 = (Graphics2D) graphics;
g2.setColor(Color.BLUE);
Paper p = new Paper();
//此處的paperW和paperH是從目標打印機的進紙規格中獲取的,實際針式打印機的可打印區域是有限的,
//距紙張的上下左右1inch(英寸)的中間的距形框為實際可打印區域,超出範圍的內容將不會打印出來(沒有設置偏移的情況)
//如果設置偏移量,那麽超出的範圍也是可以打印的,這裏的pageW和pageH我是直接獲取打印機的進紙規格的寬和高
//也可以手動指定,從是如果手動指定的寬高和目標打印機的進紙規格相差較大,將會默認以A4紙為打印模版
p.setImageableArea(0, 0, paperW, paperH);// 設置可打印區域
p.setSize(paperW,paperH);// 設置紙張的大小
pageFormat.setPaper(p);
drawCurrentPageText(g2, pageFormat);//調用打印內容的方法
return PAGE_EXISTS;
}
}
// 打印內容
private void drawCurrentPageText(Graphics2D g2, PageFormat pf) {
Font font = null;
//設置打印的字體
font = new Font("新宋體", Font.BOLD, 11);
g2.setFont(font);// 設置字體
//此處打印一句話,打印開始位置是(200,200),表示從pf.getPaper()中座標為(200,200)開始打印
//此處200的單位是1/72(inch),inch:英寸,所以這裏的長度,在測量後需要進行轉換
g2.drawString("打印測試打印測試打印測試打印測試打印測試打印測試打印測試打印測試打印測試打印測試打印測試",200,200);
}
//連接打印機,彈出打印對話框
public void starPrint() {
try {
PrinterJob prnJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = new PageFormat();
pageFormat.setOrientation(PageFormat.PORTRAIT);
prnJob.setPrintable(this);
//彈出打印對話框,也可以選擇不彈出打印提示框,直接打印
if (!prnJob.printDialog())
return;
//獲取所連接的目標打印機的進紙規格的寬度,單位:1/72(inch)
paperW=prnJob.getPageFormat(null).getPaper().getWidth();
//獲取所連接的目標打印機的進紙規格的寬度,單位:1/72(inch)
paperH=prnJob.getPageFormat(null).getPaper().getHeight();
//System.out.println("paperW:"+paperW+";paperH:"+paperH);
prnJob.print();//啟動打印工作
} catch (PrinterException ex) {
ex.printStackTrace();
System.err.println("打印錯誤:" + ex.toString());
}
}
//入口方法
public static void main(String[] args) {
Print pm = new Print();// 實例化打印類
pm.pageSize = 2;//打印兩頁
pm.starPrint();
}
}
參考:http://blog.sina.com.cn/s/blog_8f54b9f901014fl9.html
一個可以在針式打印機上打印的Java樣例