【发布时间】:2014-08-11 12:31:23
【问题描述】:
我在 java 中编写了用于热敏打印的 java 代码,我仅使用 microsoft xps 文档编写器 在本地机器上对其进行了测试,并且工作正常,但是当我使用 Xprinter XP-F900 打印机我得到下一个错误
打印机不接受作业
完整代码:
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());
}
}
}
【问题讨论】:
-
请将您的代码简化为 minimal 示例。帐单格式的详细信息与连接打印机无关。
-
它是否比“打印机不接受作业?”可能有数百个原因...
-
@Fildor “打印机不接受作业”我得到的所有内容
-
您是否尝试过除 XPS 之外的其他打印机型号?
-
我不是我测试的第一台热敏打印机(当我使用 XPS 工具“安装驱动程序时 XPS 提供的用于测试的软件”时它工作)@Fildor