确定是否使用Java完成打印

时间:2016-02-01 07:12:17

标签: java printing

有谁知道如何确定物理打印机是否使用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);
        }
    }

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

2 个答案:

答案 0 :(得分:0)

我之前使用java试过这段代码。它似乎工作。但我不确定这对你有帮助。听众似乎没有工作。我也不知道为什么。希望this会帮助你。如果不是,我们可能想尝试找到问题的修复程序。

答案 1 :(得分:0)

谷歌搜索的第一个链接提取this。这里覆盖了PrintJobAdapter提供的所有方法,以便在其实现中调用以下方法:

private void signalCompletion() {

synchronized (JobCompleteMonitor.this) {

    completed = true;

    JobCompleteMonitor.this.notify();

}

这应该是自解释的,notify()唤醒在main方法中同一个对象上调用wait()的第一个线程。