Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/04/2012, 07:05
Avatar de valdo_kof
valdo_kof
 
Fecha de Ingreso: noviembre-2009
Ubicación: San Juan del Rio, Qro
Mensajes: 192
Antigüedad: 14 años, 6 meses
Puntos: 16
Respuesta: como hacer una impresora predeterminada

Ok gracias por responder, mira el primer link es una explicacion general del uso de PrintJob, que es lo que estoy usando y el segundo link es de jasper reports, no estoy usando eso, lo que necesito es algo parecido a esto:

tengo un codigo para mandar imprimir directo en la impresora usando DocPrintJob de java para imprimir en una impresora termica una etiqueta

mi codigo es el siguiente

Código Java:
Ver original
  1. PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
  2.  String zplCommand ="codigo ZPL";
  3. // convertimos el comando a bytes
  4. byte[] by = zplCommand.getBytes();
  5. DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
  6. Doc doc = new SimpleDoc(by, flavor, null);
  7.  
  8. // creamos el printjob
  9. DocPrintJob job = printService.createPrintJob();
  10.  // imprimimos
  11. job.print(doc, null);

el problema de aqui es que no le puedo indicar a que impresora mandar a imprimir como en este codigo

Código Java:
Ver original
  1. PrinterJob printJob = PrinterJob.getPrinterJob();
  2.         Book book = new Book();
  3.         book.append(new IntroPage(), printJob.defaultPage());
  4.         printJob.setPageable(book);
  5.         PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);//este es el problema xq aqui lo uso como arreglo y en DocPrintJob no
  6.         for (PrintService printService : services) {//aqui saco todos los nombres de las impresoras instaladas
  7.             if (count == 0) {//aqui lo que hago es obtener el nombre de la primer impresora encontrada, q en este caso es la predeterminada
  8.                 printName = printService.getName();
  9.             }
  10.             count = count + 1;
  11.         }
  12.         AttributeSet aset = new HashAttributeSet();
  13.         aset.add(new PrinterName(printName, null
  14.         services = PrintServiceLookup.lookupPrintServices(null, aset);
  15.         for (PrintService printService : services) {
  16.             PrintService printers[] = PrintServiceLookup.lookupPrintServices(null, aset);
  17.             if (printers.length == 1) {
  18.                 printJob.setPrintService(printers[0]);//aqui es donde le digo a que impresora mandar a imprimir
  19.                 try {
  20.                     printJob.print();
  21.                     band = true;
  22.                     count = 0;
  23.                     resp();
  24.                 } catch (Exception PrintException) {
  25.                     PrintException.printStackTrace();
  26.                 }
  27.             }

el problema con el que me encuentro es q no usar DocprintJob utilizando
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
solo
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();

si no puedo cambiar la impresora predeterminada con codigo java, alguien podria ayudarme a decirle al DocPrintJob a que impresora imprimir?

Nota: Necesito Mandar Imprimir Directo sin que me salga la ventana de dialogo donde selecciono la impresora, en ninguno de los dos ejemplos uso el printDialog()

Gracias de Antemano