Why you just don't export your report directly to printer? Here's a snippet: Code:JasperPrint print = (JasperPrint) JRLoader.loadObject(new File("reports/fill/example1.jrprint"«»)); PrinterJob job = PrinterJob.getPrinterJob(); PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); int selectedService = 0; for(int i = 0; i <services.length;i++){ if(services.getName().contains("HP"«»)){ selectedService = i; } } System.out.println("Selected " + services[selectedService].getName()); job.setPrintService(services[selectedService]); PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet(); MediaSizeName mediaSizeName = MediaSize.findMedia(4, 4, MediaPrintableArea.INCH); printRequestAttributeSet.add(mediaSizeName); printRequestAttributeSet.add(new Copies(1)); JRPrintServiceExporter exporter; exporter = new JRPrintServiceExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, services[selectedService]); exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, services[selectedService].getAttributes()); exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttributeSet); exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE); exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE); exporter.exportReport(); System.out.println("Done"«»);