من الأشياء التي يجهلها البعض أن هذه الطابعات لا تتوفر على مداد، فهي تعتمد على تقنية الكتابة على الورقة باستخدام تقنية الحرارة، وتنتشر مثل هذه الماكينتات داخل المقاهي ومحلالت الأكلات السريعة، حيث تعطي الفاتورة محتوية المحتويات، مع إظهار المجموع في ذيل الورقة.
بالاضافة إلى ما قدمه خليل، أرفق كود مصدري لتطبيق يطبع بطابعة حرارية.
الكود كالتالي:
public class printnow {
public static void printCard(final String bill ){
final PrinterJob job = PrinterJob.getPrinterJob();
Printable contentToPrint = new Printable(){
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
Graphics2D g2d = (Graphics2D) graphics;
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g2d.setFont(new Font("Monospaced", Font.BOLD, 7));
if (pageIndex >0){return NO_SUCH_PAGE;} //Only one page
String Bill [] = bill.split(";");
int y = 0;
for (int i = 0; i < Bill.length; i++) {
g2d.drawString(Bill[i], 0, y);
y = y + 15;
}
return PAGE_EXISTS;
}
};
PageFormat pageFormat = new PageFormat();
pageFormat.setOrientation(PageFormat.PORTRAIT);
Paper pPaper = pageFormat.getPaper();
pPaper.setImageableArea(0, 0, pPaper.getWidth() , pPaper.getHeight() -2);
pageFormat.setPaper(pPaper);
job.setPrintable(contentToPrint, pageFormat);
try {
job.print();
} catch (PrinterException e) {
System.err.println(e.getMessage());
}
}
}
الكود من شأنه أن يطبع ورقة واحدة فقط، ويبقى لك مهمة تغيير المحتوى المطبوع حسب الحاجة.
Printsupport Java
Printing reciepts with thermal printer in java
Printing example with Java