所以我有一个将任务发送到打印机的应用程序。如果我发送任务的打印机设置为“默认打印机”,一切正常,当我更改默认打印机并尝试再次将任务发送到同一台打印机时,这已经不是默认打印机了,我得到以下图片:通过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;
}