Java PrintJobEventListener未生成事件打印完成或打印失败
我正在使用打印服务的JavaAPI,它提供PrintJobEventListner来获取作业完成、打印进度、打印失败等事件。下面是我的代码片段。方法,该方法将获取要打印的pdf,获取PrintService的对象,并添加实现PrintJobEventListner的类“PrinterEventListner”Java PrintJobEventListener未生成事件打印完成或打印失败,java,Java,我正在使用打印服务的JavaAPI,它提供PrintJobEventListner来获取作业完成、打印进度、打印失败等事件。下面是我的代码片段。方法,该方法将获取要打印的pdf,获取PrintService的对象,并添加实现PrintJobEventListner的类“PrinterEventListner” public void createPrintJob() throws PrintException, IOException, Interru
public void createPrintJob() throws PrintException, IOException,
InterruptedException {
DocFlavor psFlavor = DocFlavor.INPUT_STREAM.PDF;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(2));
aset.add(MediaSizeName.ISO_A4);
aset.add(Sides.TWO_SIDED_LONG_EDGE);
aset.add(Finishings.STAPLE);
PrintService pservices = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob pj = pservices.createPrintJob();
try {
FileInputStream fis = new FileInputStream(
"/path/file.pdf");
PrinterEventListner eventListner = new PrinterEventListner();
Doc doc;
pj.addPrintJobListener(eventListner);
doc = new SimpleDoc(fis, psFlavor, null);
System.out.println("The printerName: " + pservices.getName());
pj.print(doc, aset);
} catch (IOException e) {
System.err.println(e);
} catch (PrintException e) {
System.err.println(e);
}
}
这是我的PrinterEventListner类:
public class PrinterEventListner implements PrintJobListener {
boolean completed;
public void printDataTransferCompleted(PrintJobEvent pje) {
signalCompletion();
System.out.println("Printing on progress");
}
public void printJobCompleted(PrintJobEvent pje) {
signalCompletion();
System.out.println("Printing Completed");
}
public void printJobFailed(PrintJobEvent pje) {
signalCompletion();
System.out.println("Printing Failed");
}
public void printJobCanceled(PrintJobEvent pje) {
signalCompletion();
System.out.println("Printing cancelled");
}
public void printJobNoMoreEvents(PrintJobEvent pje) {
signalCompletion();
System.out.println("No more events on Printing");
}
public void printJobRequiresAttention(PrintJobEvent pje) {
signalCompletion();
System.out.println("PrintJob Needs Attention");
}
private void signalCompletion() {
synchronized (PrinterEventListner.this) {
completed = true;
PrinterEventListner.this.notifyAll();
}
}
public synchronized void waitForJobCompletion() {
try {
while (!completed) {
wait();
}
} catch (InterruptedException e) {
}
执行代码时,我仅获取printDataTransferCompleted()和printJobNoMoreEvents()的事件。printJobCompleted()/printJobFailed()似乎不起作用。我在许多不同的论坛上搜索了同一个问题,但没有找到解决方案。有人能帮我解决这个问题吗 同样的问题,只是printDataTransferCompleted()为我工作。