Я ищу способ напечатать отчет о яшме на сетевом принтере, но не могу найти ничего связанного.
Я настроил принтер по сети, и он работает.Я могу печатать, используя драйвер, установленный в 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 и печатать без драйвера.
Есть идеи, пожалуйста?