如何在没有打印机驱动程序的情况下打印JasperPrint对象?

时间:2019-02-06 13:37:28

标签: java sockets printing jasper-reports

我正在寻找一种使用网络打印机打印jasper报告的方法,但找不到任何相关内容。

我通过网络配置了打印机,并且可以正常工作。我可以使用Windows中安装的驱动程序进行打印。我也可以使用socket(ip,port)连接到它,并使用java打印原始文本。

我想避免在主机上安装打印驱动程序以便与打印机通信。我已经可以使用套接字了

我只想打印使用该套接字设计的jasper报告。我该怎么做?非常感谢

此代码适用于驱动程序,我传递打印机名称,并且由于驱动程序已安装在计算机上而可以打印。

            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报告并在没有驱动程序的情况下打印。

有什么想法吗?

0 个答案:

没有答案