问题描述
我在上此类课时打印时遇到了问题,我正在阅读,这似乎是因为打印机不知道工作状态,但我不知道如何解决。如果有人可以帮助我,我将不胜感激。非常感谢。
这是我要使用的代码,我从主机名给出打印机名称,并提供要打印的字符串。
关于打印的一切都很好,问题在于剪切功能不起作用。
package com.company;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.util.ArrayList;
import java.util.List;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
public class PrinterService implements Printable {
@Override
public int print(Graphics g,PageFormat pf,int page)
throws PrinterException {
if (page > 0) { /* We have only one page,and 'page' is zero-based */
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("Roman",8));
g.drawString("Hello world !",10);
return PAGE_EXISTS;
}
public void printString(String printerName,String text) {
// find the printService of name printerName
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
PrintService printService[] = PrintServiceLookup.lookupPrintServices(
flavor,pras);
PrintService service = findPrintService(printerName,printService);
DocPrintJob job = service.createPrintJob();
try {
byte[] bytes;
// important for umlaut chars
bytes = text.getBytes("CP437");
Doc doc = new SimpleDoc(bytes,flavor,null);
job.print(doc,null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)