有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

确定是否已使用Java完成打印

有人知道如何确定物理打印机是否使用java完成打印吗?我已经尝试了Job Listener、Job Watcher和Job Events,但所有这些都不起作用

以下是我使用的代码:

private static class PDFPrintJobListener implements PrintJobListener {

    private static final boolean showMessages=false;

    @Override
    public void printDataTransferCompleted(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printDataTransferCompleted=" + printJobEvent);
        }
    }

    @Override
    public void printJobCompleted(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printJobCompleted=" + printJobEvent);
        }
    }

    @Override
    public void printJobFailed(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printJobEvent=" + printJobEvent);
        }
    }

    @Override
    public void printJobCanceled(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printJobFailed=" + printJobEvent);
        }
    }

    @Override
    public void printJobNoMoreEvents(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printJobNoMoreEvents=" + printJobEvent);
        }
    }

    @Override
    public void printJobRequiresAttention(final PrintJobEvent printJobEvent) {
        if(showMessages) {
            System.out.println("printJobRequiresAttention=" + printJobEvent);
        }
    }

我尝试使用侦听器,但无论打印机是否已完成打印或打印机未能打印文档,均未收到任何输出。我也搜索了其他人提出的与此相关的问题,但没有人知道答案。有时,完成的数据传输是侦听器中的唯一输出。所以我想知道如何确定打印机是否完成了文档的打印。谢谢


共 (1) 个答案

  1. # 1 楼答案

    谷歌搜索的前几个链接获取this。这里PrintJobAdapter提供的所有方法都被重写,以便在其实现中具有以下方法调用:

    private void signalCompletion() {
    
    synchronized (JobCompleteMonitor.this) {
    
        completed = true;
    
        JobCompleteMonitor.this.notify();
    
    }
    

    这应该是不言自明的,即notify()唤醒了在main方法中调用同一对象上的wait()的第一个线程