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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 针式打印_JAVA针式打印机打印整理

發(fā)布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 针式打印_JAVA针式打印机打印整理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.



在項目中,經(jīng)常有可能需要通過針式打印機打印一些票據(jù),如快遞單,發(fā)票等...

之前在做JAVA打印時,也在網(wǎng)上找了好多資料,網(wǎng)上資料太多,講的也不夠詳細,走了不少彎路,在做這個之前,連針式打印機都很少接觸。。。,不多說了,言歸正傳吧

1、在編寫代碼之前,最好測試一下在你本機是否可以連接到打印機,正常打印,如果你本機都無法打印,也就不要指望程序可以打印了。

2、本機可以連接到打印機并可以打印后,就可以開始寫代碼了,首先寫一個最簡單的程序,打印一句最簡單的話,代碼如下:

package com.gotomycloud.print;

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;//打印的總頁數(shù)

private double paperW=0;//打印的紙張寬度

private double paperH=0;//打印的紙張高度

//實現(xiàn)java.awt.print.Printable接口的打印方法

//pageIndex:打印的當前頁,此參數(shù)是系統(tǒng)自動維護的,不需要手動維護,系統(tǒng)會自動遞增

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是從目標打印機的進紙規(guī)格中獲取的,實際針式打印機的可打印區(qū)域是有限的,

//距紙張的上下左右1inch(英寸)的中間的距形框為實際可打印區(qū)域,超出范圍的內(nèi)容將不會打印出來(沒有設(shè)置偏移的情況)

//如果設(shè)置偏移量,那么超出的范圍也是可以打印的,這里的pageW和pageH我是直接獲取打印機的進紙規(guī)格的寬和高

//也可以手動指定,從是如果手動指定的寬高和目標打印機的進紙規(guī)格相差較大,將會默認以A4紙為打印模版

p.setImageableArea(0, 0, paperW, paperH);// 設(shè)置可打印區(qū)域

p.setSize(paperW,paperH);// 設(shè)置紙張的大小

pageFormat.setPaper(p);

drawCurrentPageText(g2, pageFormat);//調(diào)用打印內(nèi)容的方法

return PAGE_EXISTS;

}

}

// 打印內(nèi)容

private void drawCurrentPageText(Graphics2D g2, PageFormat pf) {

Font font = null;

//設(shè)置打印的字體

font = new Font("新宋體", Font.BOLD, 11);

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

//此處打印一句話,打印開始位置是(200,200),表示從pf.getPaper()中座標為(200,200)開始打印

//此處200的單位是1/72(inch),inch:英寸,所以這里的長度,在測量后需要進行轉(zhuǎn)換

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;

//獲取所連接的目標打印機的進紙規(guī)格的寬度,單位:1/72(inch)

paperW=prnJob.getPageFormat(null).getPaper().getWidth();

//獲取所連接的目標打印機的進紙規(guī)格的寬度,單位: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();

}

}

在打印過程中,很可能代碼正確,但是打印時,紙上確沒打印上,原因很可能是紙張放的位置有偏差,所以打印測試時,可以讓測試打印的打印內(nèi)容多一點,只要能打印出內(nèi)容就可以了

3、如果可以打印出內(nèi)容,哪怕是一條線,那么第一步就算好了。下面就是控制打印位置了,打印的位置在紙張上是有一個最左上角點的(0,0),下圖是一張類似的快遞單打印紙,圖上標有打印的起始位置、可打印區(qū)域等,可供參考,如下圖所示

知道了打印位置的規(guī)律,就可以通過測試來設(shè)置內(nèi)容的打印位置了。

4、上面講的是單張打印,但很多時間需要批量打印,這樣可以減少很多重復的工作,如果單張打印可以了,那多張打印也比較簡單,首先要設(shè)置進紙規(guī)格,和偏移量,如果是共享的網(wǎng)絡(luò)打印機,那么兩邊都需要設(shè)置,最后就是要在代碼中設(shè)置打印區(qū)域和紙張大小了,關(guān)鍵部分代碼上面已提到,可參考!

總結(jié)

以上是生活随笔為你收集整理的java 针式打印_JAVA针式打印机打印整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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