public void print(String printer, byte[] bytes, String type) throws ReportException { try { PrintService printService; DocPrintJob job; DocFlavor fl; Doc doc; DocAttributeSet das = new HashDocAttributeSet(); Object printObject; if (type == null || type.length() == 0) { fl = DocFlavor.BYTE_ARRAY.AUTOSENSE; printObject = bytes; } else if (type.equals(DocumentTypes.APPLICATION_PDF.toString())) { fl = DocFlavor.BYTE_ARRAY.AUTOSENSE; printObject = bytes; } else if (type.equals(DocumentTypes.TEXT_XML.toString())) { fl = DocFlavor.BYTE_ARRAY.AUTOSENSE; printObject = bytes; } else { log.info("Unknown type: " + type); fl = DocFlavor.INPUT_STREAM.AUTOSENSE; printObject = new ByteArrayInputStream(bytes); } if (printer != null && printer.equals(NO_PRINTER)) { log.info("Won't print. Printer: " + printer); return; } if (printer == null || printer.length() == 0 || printer.equals(DEFAULT_PRINTER)) { printService = PrintServiceLookup.lookupDefaultPrintService(); } else { try { printService = getNamedPrintService(fl, printer); } catch (Exception ex) { log.log(Level.INFO, ex.getMessage(), ex); throw new IllegalArgumentException("Printer cannot be selected"); } } if (printService == null) { log.info("printer not found: " + printer); throw new ReportException(ReportExceptionKey.PRINT_FAILED, printer); } doc = new SimpleDoc(printObject, fl, das); job = printService.createPrintJob(); PrintJobWatcher watcher = null; if (fl instanceof DocFlavor.INPUT_STREAM) { watcher = new PrintJobWatcher(job); } job.print(doc, null); if (watcher != null) { watcher.waitForDone(); ((InputStream) printObject).close(); } } catch (PrintException ex) { log.log(Level.INFO, ex.getMessage(), ex); throw new ReportException(ReportExceptionKey.PRINT_FAILED, printer); } catch (Throwable ex) { log.log(Level.INFO, ex.getMessage(), ex); throw new ReportException(ReportExceptionKey.PRINT_FAILED, printer); } }
/* * Metodo que imprime directamente en una impresra byte */ public void printExtra(CexAgenda turno) throws IOException { // FileInputStream inputStream = null; InputStream tex = null; SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy"); String fecha = sf.format(turno.getCagFecha()); SimpleDateFormat sfHora = new SimpleDateFormat("HH:mm"); String hora = ""; String te2; if (turno.getCagHora() != null) { hora = sfHora.format(turno.getCagHora()); } String impresora = "SIN IMPRESORA"; PrintService impresora11 = null; try { // inputStream = new FileInputStream("e:/archivo.txt"); String cadena = "************************************* \n\n" + "RESPONSABLE: " + turno.getCagNombreUsuario() + " \n" + "FECHA: " + fecha + " \n" + turno.getCagNombreInstitucion() + "\n" + turno .getCexHorariosDia() .getCexHorario() .getCexEspecialidadMedico() .getCexEspecialidad() .getCesNombre() + "\n" + "NÚMERO CARPETA: " + turno.getHosReferencia() != null ? turno.getHosReferencia().getCexHistoriaInstitucion().getCicNumeroCarpeta() : turno.getCexHistoriaInstitucion().getCicNumeroCarpeta() + "\n" + "CÉDULA: " + turno.getHosReferencia() != null ? turno .getHosReferencia() .getCexHistoriaInstitucion() .getCexHistoriaClinica() .getChcCedula() : turno.getCexHistoriaInstitucion().getCexHistoriaClinica().getChcCedula() + "\n" + "TURNO: " + turno.getCagSecuencia() + "\t HORA: " + hora + " \n" + "MEDICO: " + turno .getCexHorariosDia() .getCexHorario() .getCexEspecialidadMedico() .getAdmMedico() .getAmeNombreFull() + "\n" + "PACIENTE: " + turno.getHosReferencia() != null ? turno .getHosReferencia() .getCexHistoriaInstitucion() .getCexHistoriaClinica() .getChcNombreFull() : turno.getCexHistoriaInstitucion().getCexHistoriaClinica().getChcNombreFull() + "\n" + "******* TURNO EXTRA ********\n" + "\n" + "\n" + "SE RECOMIENDA ESTAR 30 MIN ANTES\n" + " DE LA HORA ESPECIFICADA\n" + "\n"; te2 = converteCaracter(cadena); tex = new ByteArrayInputStream(te2.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { log.error("printExtra() {} ", e.getMessage()); } if (tex == null) { return; } DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; Doc document = new SimpleDoc(tex, docFormat, null); PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet(); for (AdmDatosGlobales datoGlobal : listaImpresorasturnos) { if (user.getIp().equals(datoGlobal.getClave())) { impresora = datoGlobal.getValor(); break; } } // PrintService impresora11 = PrintServiceLookup.lookupDefaultPrintService(); PrintService[] printService = PrintServiceLookup.lookupPrintServices(null, null); for (PrintService printService1 : printService) { if (printService1.getName().equals(impresora)) { impresora11 = printService1; } } if (impresora11 != null) { DocPrintJob printJob = impresora11.createPrintJob(); try { printJob.print(document, attributeSet); } catch (PrintException e) { log.error("printExtra() {} ", e.getMessage()); } } else { log.error("No existen impresoras instaladas"); } tex.close(); }