I use Java to create report with JasperReports. What i want to do is that user be able to print directly, without print dialog.
I create JasperPrint and I know name and model of my printer.
I have also looked in the sample here but could not figure out how.
I use Java 1.7 and latest JasperReports library.
Does anyone know how to do it?
public class PrintApp {
public static void print() {
JasperPrint jasperPrint = getJasperPrint();
String printername = AllPrinter.getDepartmentPrinter("Admin");
// where should i introduce my printer name to jasperreports?
JasperPrintManager.printReport(jasperPrint, false);
}
private static JasperPrint getJasperPrint() {
return JasperPrinterCreator.getJasperprint();
}
}
I solved it as below, hopefully it helps someone else.
public class PrintApp {
public static void print() {
JasperPrint jasperPrint = getJasperPrint();
String selectedPrinter = AllPrinter.getDepartmentPrinter("Admin");
PrinterJob printerJob = PrinterJob.getPrinterJob();
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
PrintService selectedService = null;
if(services.length != 0 || services != null)
{
for(PrintService service : services){
String existingPrinter = service.getName().toLowerCase();
if(existingPrinter.equals(selectedPrinter))
{
selectedService = service;
break;
}
}
if(selectedService != null)
{
printerJob.setPrintService(selectedService);
boolean printSucceed = JasperPrintManager.printReport(mainPrint, false);
}
}
private static JasperPrint getJasperPrint() {
return JasperPrinterCreator.getJasperprint();
}
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments