私は、存在するjarファイルと同じフォルダにbarcode.jpgという名前のバーコードイメージを生成するJavaコードを持っています。私はこのJavaを使用してサーマルプリンタを使用してバーコードイメージを連続的に再印刷する
Image bcode = Toolkit.getDefaultToolkit().getImage("barcode.jpg");
if (bcode != null) {
oTokenPrinter.setTokenParameters(strTokenNumber, bcode);
}
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(OrientationRequested.PORTRAIT);
aset.add(new MediaPrintableArea((float) 16.0, (float) 20.5, (float) 184.0, (float) 228.5, 1000));
System.out.println(aset);
PrinterJob oJob = PrinterJob.getPrinterJob();
PageFormat pf = oJob.defaultPage();
oJob.setPrintable(oTokenPrinter, pf);
System.out.println(aset);
System.out.println("Printing Started...\n");
try {
oJob.print(aset);
} catch (PrinterException ex) {
Logger.getLogger(EntryHandler.class.getName()).log(Level.SEVERE, null, ex);
}
setTokenParameters
関数は
public void setTokenParameters(String strTokenId, Image barcode) {
strTokenID = strTokenId;
BarcodeImage = barcode;
}
であり、これはプリント()メソッドが含まれている同じクラスに存在行います。
public int print(Graphics g, PageFormat pf, int iPage) throws
PrinterException {
if (iPage > 0) {
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
/* Now we perform our rendering */
g.setFont(new Font("Arial", Font.BOLD, 10));
/*Printing Begins*/
if (BarcodeImage != null) {
System.out.println("Started Printing...\n");
g.drawImage(BarcodeImage, 16, -10, 130, 60, null);
g.drawString("Token ID: " + strTokenID, 18, 60);
g.dispose();
System.out.println("Finished Printing");
} else {
System.out.print("Image not loaded");
}
/*Finished Printing.*/
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
これは私が行うことです。画像の生成はスレッド内にあり、上書きを続け、画像を開くとその画像を見ることができます。しかし、問題は、印刷中に同じ画像を印刷し続けることです。毎回イメージのみが同じであり、トークンIDは変化し続ける。
この問題の解決方法私は印刷後毎回イメージを削除しようとしました。しかし、それは動作しません。私はまた、私のJavaプログラムを通して.batファイルを実行してプリンタスプーラをクリアしようとしました。役立たず。
注記:これは、プリンタがサーマルプリンタの場合にのみ発生します。私は普通のHP LaserJetを試してみましたが、正常に動作します。しかし問題はA4シートを無駄にしなければならないということです。私はサーマルプリンタで領収書のサイズでこのことが必要です。
タスクを簡略化しようとしましたか?例えば、 "hello、world"を同じプリンタに印刷することができます。プリンターのバッファーサイズの問題ですか? – AlexR
私が言ったように、私はそれらが変化していても、どんな文字列でも印刷することができます....イメージの傷つきは常にその最初のイメージです...そして、このことはHP laserjetで動作することにも注意してください...サーマルプリンタだけではこれは動作しません.... – tattu
また、画像は正しく再生されています...もし私がbarcode.jpgを開いて新しいものをプレビューしていても.... ..プリンタがどこで最初のものを保持しているかわからない... – tattu