import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.JOptionPane;
/**
*
* @author Aram
*/
public class ticket {
class Ticket{
private String contentTicket = " Renta de trajes {{sucursal}}\n" + " {{direccion}}\n" + " =========================================\n"
+ " Ticket # {{ticket}}\n" + " {{fecha}} {{hora}}\n" + " Descripcion Importe\n"
+ " =========================================\n"
+ " {{items}}\n" + " =========================================\n"
+ " COSTO: ${{total}} ANTICIPO:{{ant}}\n" + " RECIBIDO: ${{recibo}} | CAMBIO: ${{change}}\n" +"RESTANTE: ${{rest}}\n" + " =========================================\n"
+ " GRACIAS POR SU PREFERENCIA...\n"
+ " ******::::::::*******"
+ "\n "
+ "\n "
+ "\n "
+ "\n "
+ "\n "
+ "\n ";
//El constructor que setea los valores a la instancia
Ticket(String suc, String domSuc, String iDticket, String fecha, String hora, String detalles, String Costo, String anticipo, String recibo, String change, String resto) { this.contentTicket = this.contentTicket.replace("{{sucursal}}", suc); this.contentTicket = this.contentTicket.replace("{{direccion}}", domSuc); this.contentTicket = this.contentTicket.replace("{{ticket}}", iDticket); this.contentTicket = this.contentTicket.replace("{{fecha}}", fecha); this.contentTicket = this.contentTicket.replace("{{hora}}", hora); this.contentTicket = this.contentTicket.replace("{{items}}", detalles); this.contentTicket = this.contentTicket.replace("{{total}}", Costo); this.contentTicket = this.contentTicket.replace("{{ant}}", anticipo); this.contentTicket = this.contentTicket.replace("{{recibo}}", recibo); this.contentTicket = this.contentTicket.replace("{{change}}", change); this.contentTicket = this.contentTicket.replace("{{rest}}", resto); }
public void Imprimir() { //Especificamos el tipo de dato a imprimir
//Tipo: bytes; Subtipo: autodetectado
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
//Aca obtenemos el servicio de impresion por defatul
//Si no quieres ver el dialogo de seleccionar impresora usa esto
//PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//Con esto mostramos el dialogo para seleccionar impresora
//Si quieres ver el dialogo de seleccionar impresora usalo
//Solo mostrara las impresoras que soporte arreglo de bits
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
PrintService service = ServiceUI.printDialog(null, 700, 200, printService, defaultService, flavor, pras);
//Creamos un arreglo de tipo byte
byte[] bytes;
//Aca convertimos el string(cuerpo del ticket) a bytes tal como
//lo maneja la impresora(mas bien ticketera :p)
bytes = this.contentTicket.getBytes();
//Creamos un documento a imprimir, a el se le appendeara
//el arreglo de bytes
Doc tic = new SimpleDoc(bytes, flavor, null);
//Creamos un trabajo de impresión
DocPrintJob job = defaultService.createPrintJob();
//Imprimimos dentro de un try de a huevo
try { //El metodo print imprime
job.print(tic, null);
System.out.println(tic.getReaderForText());
System.out.println(tic.getDocFlavor());
System.out.println(tic.getStreamForBytes());
} catch (Exception er) { JOptionPane.showMessageDialog(null, "Error al imprimir: " + er.getMessage());
}
}
}
public void crear(){
try { Ticket tk = new Ticket(princip1.suc, princip1.domSuc, String.valueOf(princip1.IDTicket), princip1.fTicket, princip1.hTicket, princip1.detalles, String.valueOf(princip1.preci), String.valueOf(princip1.ant), String.valueOf(princip1.recibido), String.valueOf(princip1.cambio), String.valueOf(princip1.rest));
// JOptionPane.showMessageDialog(rootPane, productos);
// llamando al metodo
tk.Imprimir();
} catch (Exception e) { System.out.println(e);
princip1 p= new princip1();
JOptionPane.showMessageDialog(p, "No se imprimira el ticket "+e);
}
}
}