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);
}
}
}