Как напечатать объект JasperPrint без драйвера принтера? - PullRequest
0 голосов
/ 06 февраля 2019

Я ищу способ напечатать отчет о яшме на сетевом принтере, но не могу найти ничего связанного.

Я настроил принтер по сети, и он работает.Я могу печатать, используя драйвер, установленный в Windows.Я также могу подключиться к нему с помощью сокета (ip, port) и печатать необработанный текст с помощью Java.

Я хочу избежать установки драйвера принтера на хост-машину для связи с принтером.Я уже могу сделать это с сокетом

Я просто хочу напечатать отчет о яшме с дизайном, используя этот сокет.Как мне это сделать?Большое спасибо

Этот код работает с драйвером, я передаю имя принтера, и он печатается, потому что драйвер установлен на компьютере.

            InputStream stream = null;
            stream = new FileInputStream("C:\\myjasperdesign.jasper");

            JasperPrint jasperReport = JasperFillManager.fillReport(stream, null, makeDataSourceTemplate(cPrint));

            PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
            printRequestAttributeSet.add(MediaSizeName.ISO_A4);

            PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
            printServiceAttributeSet.add(new PrinterName(printerName, null));

            JRPrintServiceExporter exporter = new JRPrintServiceExporter();

             exporter.setExporterInput(new SimpleExporterInput(jasperReport));

             SimplePrintServiceExporterConfiguration configuration = new SimplePrintServiceExporterConfiguration();


   configuration.setPrintRequestAttributeSet(printRequestAttributeSet);
        configuration.setPrintServiceAttributeSet(printServiceAttributeSet);

              configuration.setDisplayPageDialog(false);
              configuration.setDisplayPrintDialog(false);

              exporter.setConfiguration(configuration);
              exporter.exportReport();

Вот мой сокет.При этом также очень хорошо печатается необработанный текст без какого-либо установленного драйвера.

 Socket clientSocket = null;
        try {

            clientSocket = new Socket(host, port);
            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());


            outToServer.writeBytes("Printer works ");

            /*Cut the paper*/
            char ESC = (char) 27;
            char CR = (char) 29;
            char CR2 = (char) 64;
            char V = (char) 86;

            String cmd = ESC + "" + CR2 + "" + CR + "" + V;
            outToServer.writeBytes(cmd);
            /*END Cut the paper*/

            outToServer.flush();
            clientSocket.shutdownOutput();
            clientSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

Я хочу объединить сокет и отчет Jasper и печатать без драйвера.

Есть идеи, пожалуйста?

...