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