0

所以我有一个将任务发送到打印机的应用程序。如果我要发送任务的打印机设置为“默认打印机”,那么一切正常,当我更改默认打印机并尝试再次将任务发送到这台已经不是默认打印机的打印机时,我得到以下图片:通过java它找到正确的打印机,发送一个任务,在打印队列中,状态改变如下 - 假脱机,打印并发送到打印机。几秒钟后发送到打印机状态消失,没有任何反应,没有错误,什么都没有。看着我的代码,我真的看不出任何问题。它可以正确找到所有内容,我不确定在哪里寻找解决方案以及在此处提供哪个代码片段以使图片更清晰。

它肯定正确地解决了这一点:

private void sendDataToPrinter(PrinterContent printerContent) {
    //Get available printers
    PrintService[] printServices = Constants.PRINT_SERVICES;

    //Look for right printer and print data
    for (int i = 0;  i < printServices.length; i++) {

        if (printServices[i].getName().equals(printerContent.getPrinterName())) {
            print(printServices[i], printerContent);
            break;
        }
    }
}

这是打印方法:

private void print(PrintService printer, PrinterContent printerContent) {

    Document htmlDocument = ConverterUtil.convertStringToHtmlDocument(printerContent.getPrintContent());
    PDDocument pdfDocument = ConverterUtil.convertHtmlToPdf(htmlDocument);
    PrinterJob printJob = createPDFPrinterJob(pdfDocument);

    try {
        printJob.setPrintService(printer);
        printJob.print();
    }
    catch(PrinterException ex) {
        ex.printStackTrace();
    }
}

和 createPDFPrinterJob 方法:

private PrinterJob createPDFPrinterJob(PDDocument pdfDocument) {

    PrinterJob printJob = PrinterJob.getPrinterJob();

    PageFormat pageFormat = printJob.defaultPage();
    pageFormat.setOrientation(PageFormat.PORTRAIT);

    pageFormat.setPaper(PrinterJob.getPrinterJob().defaultPage().getPaper());

    try {
        printJob.setPrintable(new PDPageable(pdfDocument), pageFormat);
    }
    catch(PrinterException ex) {
        ex.printStackTrace();
    }

    return printJob;
}
4

0 回答 0