タスクをプリンターに送信するアプリケーションがあります。タスクの送信先のプリンターが「デフォルトのプリンター」に設定されている場合、すべて正常に機能しています。デフォルトのプリンターを変更して、同じプリンターにタスクを再度送信しようとすると、次の画像が表示されます。 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;
}