En esta ocasión les tenemos esta aportación de Hugo S. López, en la que nos muestra como podemos mandar a imprimir tiquets en Java, con el añadido de poder mandar a expulsar el cajón del dinero, lo colocamos tal cual nos lo dejo en los comentarios para que no se pierda nada.
Les dejamos también la cuenta de Facebook y de Twitter de Hugo S. López, autor del siguiente código.
facebook.com/husalo
twitter.com/husalo_
Esta es la clase que use, a esta le paso los parametros que quiero imprimir, ahi tengo el texto q va a llevar el ticket y solo voy sustituyendo valores en el constructor
import java.awt.*;
import java.awt.print.*;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.Doc;
import javax.print.PrintException;
import javax.print.ServiceUI;
import javax.print.attribute.*;
public class Ticket {
//Ticket attribute content
private String contentTicket = “::”+(char)27+(char)112+(char)0+(char)10+(char)100+”ACCESORIOS {{nameLocal}}::\n”+
“Periban. Mich. {{dateTime}}\n”+
//”EXPEDIDO EN: {{expedition}}\n”+
“Emiliano Zapata Col. Centro \n”+
“=============================\n”+
// “Periban. Mich. {{dateTime}}\n”+
//”RFC: XAXX010101000\n”+
//”Caja # {{box}} \n”+
“Ticket # {{ticket}}\n”+
“LE ATENDIO: {{cajero}}\n”+
//”{{dateTime}}\n”+
“=============================\n”+
“{{items}}\n”+
“=============================\n”+
“SUBTOTAL: {{subTotal}}\n”+
“IVA: {{tax}}\n”+
“TOTAL: {{total}}\n\n”+
//”RECIBIDO: {{recibo}}\n”+
//”CAMBIO: {{change}}\n\n”+
“=============================\n”+
“GRACIAS POR SU COMPRA…\n”+
“ESPERAMOS SU VISITA NUEVAMENTE\n”
+ “\t::{{nameLocal}}::\n”+
“\n”
+ “\n\n\n “;
//El constructor que setea los valores a la instancia
Ticket(String nameLocal, String expedition, String box, String ticket, String caissier, String dateTime, String items, String subTotal, String tax, String total) {
this.contentTicket = this.contentTicket.replace(“{{nameLocal}}”, nameLocal);
this.contentTicket = this.contentTicket.replace(“{{expedition}}”, expedition);
this.contentTicket = this.contentTicket.replace(“{{box}}”, box);
this.contentTicket = this.contentTicket.replace(“{{ticket}}”, ticket);
this.contentTicket = this.contentTicket.replace(“{{cajero}}”, caissier);
this.contentTicket = this.contentTicket.replace(“{{dateTime}}”, dateTime);
this.contentTicket = this.contentTicket.replace(“{{items}}”, items);
this.contentTicket = this.contentTicket.replace(“{{subTotal}}”, subTotal);
this.contentTicket = this.contentTicket.replace(“{{tax}}”, tax);
this.contentTicket = this.contentTicket.replace(“{{total}}”, total);
}
public void print() throws IOException {
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); //nos da el array de los servicios de impresion
//Creamos un arreglo de tipo byte
//y le agregamos el string convertido (cuerpo del ticket) a bytes tal como
//lo maneja la impresora(mas bien ticketera :p)
byte[] bytes= this.contentTicket.getBytes();
//Especificamos el tipo de dato a imprimir
//Tipo: bytes; Subtipo: autodetectado
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(bytes,flavor,null);
//Creamos un trabajo de impresión
DocPrintJob job =null;
if(services.length>0){
for(int i=0; i<services.length; i++){
if(services[i].getName().equals(«GP-5890X Series»)){//aqui escribimos/elegimos la impresora por la que queremos imprimir
job = services[i].createPrintJob();// System.out.println(i+»: «+services[i].getName());
}
}
}
//Imprimimos dentro de un try obligatoriamente
try{
job.print(doc, null);
}catch(PrintException ex){
System.out.println(ex);
}
}
}
para que imprima varios articulos?
Me gustaMe gusta
muy buen aporte amigo me salvaste el cuello en el trabajo jejeje
Me gustaMe gusta
Funciona muy bien muchas gracias por el aporte
Me gustaMe gusta
¡Gracias por el aporte! funciona muy bien.
Me gustaMe gusta
y para cortar el papel
Me gustaMe gusta
hola como pongo el main para que me funcione el codigo
Me gustaMe gusta
public static void main(String[] args) {
try {
AbrirCajon a = new AbrirCajon(«p»,»p»,»p»,»p»,»p»,»p»,»p»,»p»,»p»,»p»); //las p solo son para que se cumpla el formato de la clase tu las remplazas por los parametros que quieras
a.print();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
Me gustaMe gusta
no entiendo en que parte se mana a abrir el cajon…
Me gustaMe gusta
El conjunto de caracteres que se agrega a la impresión es lo que hace que se abra el cajón
Me gustaMe gusta
Funciona para cualquier impresora ?
Me gustaMe gusta
solo con las que tienen cortador y son compatibles con epson pos
Me gustaMe gusta
Y COMO PUEDO AGREGAR UNA IMAGEN ?
Me gustaMe gusta
y el corte?
Me gustaMe gusta
se supone que ahi mismo lo genera
Me gustaMe gusta
muy buen aporte
Me gustaMe gusta