- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在java中编写了用于热敏打印的java代码,我仅使用microsoft xps文档编写器在本地计算机上对其进行了测试,并且工作正常,但是当我使用时Xprinter XP-F900 打印机我收到下一个错误
Printer is not accepting job on
完整代码:
public class printThisBill {
public static void printCard(final String bill) {
Printable contentToPrint = new Printable() {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int page)
throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
pageFormat.setOrientation(PageFormat.LANDSCAPE);
Graphics2D g2d = (Graphics2D) graphics;
g2d.translate(pageFormat.getImageableX(),
pageFormat.getImageableY());
g2d.setPaint(Color.black);
g2d.setFont(new Font("Arial", Font.BOLD, 10));
int y = 15;
Font f = new Font(Font.SANS_SERIF, Font.PLAIN, 8);
graphics.setFont(f);
for (int i = 0; i < Tbill.length; i++) {
graphics.drawString(Tbill[i], 5, y);
y = y + 15;
}
return PAGE_EXISTS;
}
};
PrinterService ps = new PrinterService();
PrintService pss = null;
PrinterJob job = null;
// get the printer service by printer name
// first test if printer defind by the use search on db
String query = "SELECT * FROM printer WHERE id_printer=1";
conn = DBconnect.connectDB();
if (db.TestIFex(query, conn)) {
Statement sqlState = null;
ResultSet rows = null;
try {
sqlState = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
rows = sqlState.executeQuery(query);
String printer_name = rows.getString(2);
pss = ps.getCheckPrintService(printer_name);
job = PrinterJob.getPrinterJob();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
sqlState.close();
rows.close();
} catch (Exception e) {
}
}
} else {
job = PrinterJob.getPrinterJob();
pss = job.getPrintService();
}
try {
job.setPrintService(pss);
} catch (PrinterException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
job.setPrintable(contentToPrint);
try {
job.print();
} catch (PrinterException e) {
System.err.println(e.getMessage());
}
}
}
最佳答案
我的第一个猜测是计算机无法识别打印机。当我使用 Java 进行热敏打印时,我会遇到这个问题,只是意识到打印机没有连接到我的计算机,或者我在代码中调用了不正确的打印机。
我的第二个猜测是,如果您尝试打印 Graphics2D 对象或图像,则需要使用字节命令。热敏打印机使用起来确实很乏味,因为实际上没有任何标准,人们很可能必须查看文档才能了解如何打印条形码/剪切/更改字体等。
打印机的名称可能与您想象的完全不同。因此,我建议首先测试使用 System.out.println() 来查看您获得的打印机,如果您还没有这样做,我还建议将您希望使用的热敏打印机设置为默认打印机。
DocPrintJob job = PrintServiceLookup.lookupDefaultPrintService().createPrintJob();
System.out.println(job + " <- printer");
首先看看你能从中得到什么。可能和你想象的不太一样。
这是一个简单的示例,看看您是否可以使用我制作的热敏打印机通用的方法来使用打印机打印字符串。
public void PrintString(String s) throws Exception{
DocPrintJob job = PrintServiceLookup.lookupDefaultPrintService().createPrintJob();
//Get's the default printer so it must be set.
System.out.println(job + " <- printer");
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
byte[] b = s.getBytes("CP437");
//Get's the bytes from the String(So that characters such as å ä ö may be printed).
Doc doc = new SimpleDoc(b, flavor, null);
//Includes the content to print(b) and what kind of content it is (flavor, in this case a String turned into a byte array).
job.print(doc, null);
}
只需使用您希望用作参数的任何字符串来调用它,然后看看结果是什么。再次,您需要将您希望使用的热敏打印机设置为默认打印机(如果您使用的是 Windows,则可以在控制面板中执行此操作,并且我无法想象在其他操作系统上做到这一点非常困难)。
如果您能够打印字符串但无法打印图形选项。那么你需要去here并下载“程序员手册最新版本”或适合您需要的手册。您可能还想去厂家website阅读更多内容。使用热敏打印机进行开发一点也不容易,如果您想打印任何精美的东西,则需要做大量的工作。
尝试打印字符串并说出你得到的结果。您没有说天气与否,您首先测试了打印一个简单的字符串,然后再转向 Graphics2D 等高级内容。
此外,这里还有 stackoverflow 上的一些其他问题/答案,可以帮助您充分利用热敏打印机。
(如何让打印机打印速度更快)
How to improve speed with Receipt printer and ESC/POS commands in Java
(如何打印已转换为 Graphics 对象的字符串)
Printing reciepts with thermal printer in java
希望这能为您提供所需的帮助..真诚的..
//奥维尔·诺德斯特伦
关于java - Java中的热敏打印 "Printer is not accepting job",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25243386/
我想要类似于以下伪代码的东西: while input is not None and timer = 5: print "took too long" else: print inp
如何将 MainEngine Observable 转换为 Cold?来自这个例子: public IObservable MainEngine { get
自从手表被发明以来,表盘的方圆之争就始终没有停下来过,在漫长的岁月中,无论是方形还是圆形表盘,人们都为其寻找到足够多的设计元素,让其肆意成长,这种生机与活力后来也延续到了智能手表上,在2014年,这
我正在学习 CUDA,试图解决一些标准问题。例如,我正在使用以下代码求解二维扩散方程。但我的结果与标准结果不同,我无法弄清楚。 //kernel definition __global__ void
我的 Web 应用程序使用 native dll 来实现其部分功能(其位置在 PATH 中提供)。一切正常,直到我对 WAR 进行更改并且 JBoss 热部署此 WAR。此时dll已经找不到了,需要手
我看到这个问题here 。这是关于实现每个发出的项目的延迟。这是根据accepted answer如何实现的: Observable.zip(Observable.range(1, 5) .g
我最近一直在进行冷迁移...这意味着我无法在进行迁移时从应用程序级别读取/写入数据库(维护页面)。 这样就不会因为更改结构而发生错误,而且如果负载很大,我也不希望 mysql 在迁移过程中崩溃。 我的
我是一名优秀的程序员,十分优秀!