这是我用于打印 pdf 文件并在执行打印时获取它的事件的代码。我的问题是它总是进入printJobNoMoreEvents
而不是进入printJobCompleted
. 可能是什么问题?我该如何解决这个问题?是否可以从printJobNoMoreEvents
活动中检查工作是否已完成?
这是我的代码:
import com.qoppa.pdfPrint.PDFPrint;
import java.awt.print.PrinterJob;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.SimpleDoc;
import javax.print.event.PrintJobEvent;
import javax.print.event.PrintJobListener;
public class PdfPrint implements PrintJobListener{
public static void main(String[] args) {
try
{
// Create a printer job and get its PrintService
PrinterJob pJob = PrinterJob.getPrinterJob();
PrintService ps = pJob.getPrintService();
// Load the PDF document and create SimpleDoc from it
PDFPrint pdfPrint = new PDFPrint("C:\\temp\\file printing 1.pdf", null);
SimpleDoc printDoc = new SimpleDoc(pdfPrint, DocFlavor.SERVICE_FORMATTED.PRINTABLE, null);
// Get a doc print job from the service and set the listener and Printable
DocPrintJob docPrint = ps.createPrintJob();
docPrint.addPrintJobListener(new PdfPrint());
docPrint.print(printDoc, null);
}
catch (Exception ex)
{
Logger.getLogger(PdfPrint.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void printDataTransferCompleted(PrintJobEvent pje) {
System.out.println("printDataTransferCompleted");
}
@Override
public void printJobCompleted(PrintJobEvent pje) {
System.out.println("printJobCompleted");
}
@Override
public void printJobFailed(PrintJobEvent pje) {
System.out.println("printJobFailed");
}
@Override
public void printJobCanceled(PrintJobEvent pje) {
System.out.println("printJobCanceled");
}
@Override
public void printJobNoMoreEvents(PrintJobEvent pje) {
System.out.println("printJobNoMoreEvents");
}
@Override
public void printJobRequiresAttention(PrintJobEvent pje) {
System.out.println("printJobRequiresAttention");
}
}
Thakn 提前了。