Java - Imprimir ticket

 
Vista:

Imprimir ticket

Publicado por Elena (1 intervención) el 29/11/2007 18:57:31
Hola!!!
Tengo un pequeño problema, estoy imprimiendo desde java un ticket con líneas de ventas, pero cuando llega a un determinado número de líneas se corta el ticket y para la impresión.
La clase que uso para imprimir es printJob
Espero me puedan ayudar,muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Imprimir ticket

Publicado por Esther (3 intervenciones) el 12/11/2008 09:40:54
Buenos días Elena, finalmente solucionaste este problema que se te estaba presentando al imprimir un ticket? Me lo podrías decir porque yo estoy teniendo el mismo problema

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por juan antonio collantes mejia (2 intervenciones) el 03/05/2010 22:11:14
ojla te ayude este codiog esta dividido en 3 clases lo que imprime es mas omenos esto claro lo puedes cambiar como mas te paresca

RESTAURANTE XXXX
EXPEDIDO EN: ----------
AV. TAMAULIPAS NO. 5 LOC. 101
=============================
LIMA, XXXXXXXXXXXX
RFC: CSI-020226-MV4

Caja # 1 - Ticket # 1
LE ATENDIO: JUAN
30/04/2010 11:46:47 AM
=============================
1 Articulo Prueba 15.00
2 Articulo Prueba 25.00
=============================
SUBTOTAL 29.75
IVA 5.25
TOTAL 35.00

RECIBIDO 50.00
CAMBIO 15.00

=============================
EL xxx ES NUESTRA PASION...
VIVE LA EXPERIENCIA EN xxx
Gracias por su visita

aca te dejo el codigo de las 3 clases

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package ImprimirClases;
import java.util.ArrayList;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.swing.JOptionPane;
public class Ticket{
static ArrayList<String> CabezaLineas=new ArrayList<String>();
static ArrayList<String> subCabezaLineas=new ArrayList<String>();
static ArrayList<String> items=new ArrayList<String>();
static ArrayList<String> totales=new ArrayList<String>();
static ArrayList<String> LineasPie=new ArrayList<String>();
public static void AddCabecera(String line){CabezaLineas.add(line);}
public static void AddSubCabecera(String line){subCabezaLineas.add(line);}
public static void AddItem(String cantidad,String item,String price){
OrderItem newItem = new OrderItem(' ');
items.add(newItem.GeneraItem(cantidad,item, price));
}
public static void AddTotal(String name,String price){
OrderTotal newTotal = new OrderTotal(' ');
totales.add(newTotal.GeneraTotal(name, price));
}
public static void AddPieLinea(String line){LineasPie.add(line);}
public static String DibujarLinea(int valor){
String raya="";for(int x=0;x<valor;x++){raya+="=";}return raya;
}
public static String DarEspacio(){return "\n";}
public static void ImprimirDocumento(){
String cadena="";
for(int cabecera=0;cabecera<CabezaLineas.size();cabecera++ ){cadena+=CabezaLineas.get(cabecera);}
for(int subcabecera=0;subcabecera<subCabezaLineas.size();s ubcabecera++){cadena+=subCabezaLineas.get(subcabec era);}
for(int ITEM=0;ITEM<items.size();ITEM++){cadena+=items.get (ITEM);}
for(int total=0;total<totales.size();total++){cadena+=tota les.get(total);}
for(int pie=0;pie<LineasPie.size();pie++){cadena+=LineasPi e.get(pie);}
 
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob pj = service.createPrintJob();
byte[]bytes =cadena.getBytes();
Doc doc = new SimpleDoc(bytes, flavor,null);
try{
pj.print(doc,null);
}catch(Exception e){ }
}
}
package ImprimirClases;
public class OrderTotal{
char[] temp=new char[] { ' ' };
public OrderTotal(char delimit){temp=new char[]{delimit};}
public String GetTotalNombre(String totalItem){
String[] delimitado=totalItem.split(""+temp);
return delimitado[0];
}
public String GetTotalCantidad(String totalItem){
String[] delimitado=totalItem.split(""+temp);
return delimitado[1];
}
public String GeneraTotal(String Nombre, String precio){return Nombre+temp[0]+precio;}
}
 
package ImprimirClases;
public class OrderItem{
char[] temp=new char[]{ ' ' };
public OrderItem(char delimit){temp=new char[]{delimit };}
public String GetItemCantidad(String orderItem){
String[] delimitado=orderItem.split(""+temp);
return delimitado[0];
}
public String GetItemNombre(String orderItem){
String[] delimitado=orderItem.split(""+temp);
return delimitado[1];
}
public String GetItemPrecio(String orderItem){
String[] delimitado=orderItem.split(""+temp);
return delimitado[2];
}
public String GeneraItem(String cantidad, String nombre, String precio){return cantidad+temp[0]+nombre+temp[0]+precio;}
}

las clases de orderitem y oredetotal es obio para que son

luego de eso tedria que crear una instancia de la clase Ticket:

aca te dejo mi clase main donde llamo a mi calse Ticket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package ImprimirClases;
import java.text.SimpleDateFormat;
import java.util.*;
public class Main {
public static void main(String[] args){
Date date=new Date();
SimpleDateFormat fecha=new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat hora=new SimpleDateFormat("hh:mm:ss aa");
Ticket ticket = new Ticket();
ticket.AddCabecera("RESTAURANTE XXXX");
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddCabecera("EXPEDIDO EN: ----------");
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddCabecera("AV. TAMAULIPAS NO. 5 LOC. 101");
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddCabecera(ticket.DibujarLinea(29));
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddCabecera("LIMA, XXXXXXXXXXXX");
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddCabecera("RFC: CSI-020226-MV4");
ticket.AddCabecera(ticket.DarEspacio());
ticket.AddSubCabecera(ticket.DarEspacio());
ticket.AddSubCabecera("Caja # 1 - Ticket # 1");
ticket.AddSubCabecera(ticket.DarEspacio());
ticket.AddSubCabecera("LE ATENDIO: JUAN");
ticket.AddSubCabecera(ticket.DarEspacio());
ticket.AddSubCabecera(""+fecha.format(date) + " " + hora.format(date));
ticket.AddSubCabecera(ticket.DarEspacio());
ticket.AddSubCabecera(ticket.DibujarLinea(29));
ticket.AddSubCabecera(ticket.DarEspacio());
ticket.AddItem("1","Articulo Prueba","15.00");
ticket.AddItem("","",ticket.DarEspacio());
ticket.AddItem("2","Articulo Prueba","25.00");
ticket.AddItem("","",ticket.DarEspacio());
ticket.AddTotal("",ticket.DibujarLinea(29));
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("SUBTOTAL","29.75");
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("IVA","5.25");
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("TOTAL","35.00");
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("RECIBIDO","50.00");
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("CAMBIO","15.00");
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddTotal("",ticket.DarEspacio());
ticket.AddPieLinea(ticket.DibujarLinea(29));
ticket.AddPieLinea(ticket.DarEspacio());
ticket.AddPieLinea("EL xxx ES NUESTRA PASION...");
ticket.AddPieLinea(ticket.DarEspacio());
ticket.AddPieLinea("VIVE LA EXPERIENCIA EN xxx");
ticket.AddPieLinea(ticket.DarEspacio());
ticket.AddPieLinea("Gracias por su visita");
ticket.AddPieLinea(ticket.DarEspacio());
ticket.ImprimirDocumento();
}
}
se puede mejorar bastante ese codigo te sugiero usar este mismo codio solo adta el metodo < ImprimirDocumento() para que trabaje con FileWriter aca puede poner codigo para que corte elpale una vesz terminada todas las lineas que deseas imprimir por mi parte ya mejore bastnate este codigo compara este resultado con el de arriba:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SANDALS RESTAURANT
           tlf: 222222  r.u.c: 22222222222
---------------------------------------------------------
           Ticket Factura No:'003-000011'
                  03/05/2010 03:05:49 PM
                  Mesa 3 Mozo juan Pers 3
----------------------------------------------------------
cant      producto                    p.u            total
----------------------------------------------------------
100  copa de pisco mo. 1,982.25 1,982.25
15     jarra de pisco s.          72.55       72.55
450  margarita                      16.00       16.00
1      martini                            13.00       13.00
1      1/2 baby rife c/               17.00       17.00
25   1/2 baby rife c/                17.00       17.00
----------------------------------------------------------
total                                                        154.50
Igv                                                           29.355
total venta                                              183.85
paga con                                               200.00
vuelto                                                       16.14
----------------------------------------------------------
GRACIAS POR SU PREFERENCIA

JUAN ANTONIO COLLANTES MEJIA [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por edwin  (3 intervenciones) el 08/12/2010 17:05:12
saludos Juan Antonio

con respecto a tu codigo, quisiera saber con que tipo de impresora funciona, y si hay que hacer algo mas para que imprima el ticket

Gracias por tu atencion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Juan Antonio (6 intervenciones) el 20/04/2011 17:27:06
realemente sisrve pardo tipo de ticketras incluso en impresoras convencionales
como dije antes he mejorado bastante el codigo....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por daniela (37 intervenciones) el 13/05/2011 01:30:32
Hola, oye una pregunta y como se le ordena aqui que corte un ticket???? es que ya uso una clase similar pero pues aun no me corta el ticket!! por favor necesito ayuda urgente muchsas graciassss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por JUAN ANTONIO COLLANTES MEJIA (6 intervenciones) el 13/05/2011 16:48:44
EL Corte del Papel es algo sencillo solo tines q mandarle ciertos comandos a la ticketera desde tu aplicacion nada mas y si quieres abrir una gaveta de dinero igual son codigos sencillos los puedes encontrar en internet, lo unico q tendrias q hacer es modificarlo a lenguaje java y listo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por daniela (37 intervenciones) el 14/05/2011 18:50:37
HOla juan antonio, muchas gracias, fijate que encontre ciertos comanditos pero jamas dicen como le debo hacer para mandarlos, nose como hacerle, que linea debo poner, esun string? nose, por favor me podrias decir como mandar estos comandos por favor? muchisismas gracias y espero alguien me ayude, trabajo con java, epson tmt81 :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por FABIAN CASTRO (2 intervenciones) el 14/05/2012 16:26:35
Buen dia.... por favor necesito ayuda urgente....
Estoy realizando una aplicacion q imprime unos recibos y necesito q corte el papel, esta apli la estoy realizando en netbeans pero me tiene loco lo de cortar el papel, la impresora es una Epson TM-88V pero no encuentro la manera de enviarle estos comandos "\x1B@\x0A\x0D\x1Bi\x0A\x0D" a la impresora desde netbeans.....ayuda por favor......
Por cierto la impresora esta conectada x usb y esos comandos son los de corte... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Ruben (1 intervención) el 25/02/2012 20:12:38
Disculpa la molestia Juan pero podrias dar un ejemplo de como se deberia hacer para poder cortar el papel mi impresora usa la fuente "control" tamaño 12, lo que pasa que antes tenia un script en vb6, pero ahora me pase a java y no encuentro la forma de cambiar la fuente al imprimir para poder cortar el papel. Desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por FABIAN CASTRO (2 intervenciones) el 14/05/2012 07:53:32
Buen dia.... por favor necesito ayuda urgente....
Estoy realizando una aplicacion q imprime unos recibos y necesito q corte el papel, esta apli la estoy realizando en netbeans pero me tiene loco lo de cortar el papel, la impresora es una Epson TM-88V pero no encuentro la manera de enviarle estos comandos "\x1B@\x0A\x0D\x1Bi\x0A\x0D" a la impresora desde netbeans.....ayuda por favor......
Por cierto la impresora esta conectada x usb y esos comandos son los de corte... gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Juan Antonio Collantes Mejia (6 intervenciones) el 05/06/2012 15:56:56
el codigo para cortar papel es el siguiente

char[] CORTAR_PAPEL=new char[]{0x1B,'m'}; // codigo q corta el papel
imp.write(CORTAR_PAPEL); // mando a la impreosra

el codigo para abrir una gaveta de dinero

char ABRIR_GAVETA[]={(char)27,(char)112,(char)0,(char)10,(char)100};
imp.write(ABRIR_GAVETA);


Disculpen por la respuesta tan tarde.....
espero les ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por carlos mario herrrera (1 intervención) el 06/07/2012 17:48:12
hola Juan Antonio.
mira he probado tu ejemplo y me sirvió lo prove en una impresora de ticket epson y esta conectada
al puerto USB, pero no me corta el papel y he probado tu cidigo

char[] CORTAR_PAPEL=new char[]{0x1B,'m'}; // codigo q corta el papel
imp.write(CORTAR_PAPEL); // mando a la impresora

pero no se donde colocarlo, a ver si me ayudas con eso.
gracias!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por armando (1 intervención) el 18/07/2012 22:37:44
Hola disculpa la molestia pero soy nuevo en esto de la programacion y tengo una duda cada clase y el main van en un archivo o todo va junto en un solo archivo??? y otra pregunta donde iria el codigo para cortar el ticket?? te agradeceria tu ayuda!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por anonymous (3 intervenciones) el 09/03/2017 21:20:02
oye al fin pudiste cortar el papel en el impresora?? estoy en esas ayudame porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por angel (1 intervención) el 11/07/2012 01:38:17
hola he estado checando tu codigo pero pues la verdad no se como aplicarlo ya que lo necesito implementar en una jtable y pues lo intente correr y no me marca error pero no imprime nada uso una impresaora epson normal si puedes asesorarme te lo agradeceria mucho te dejo mi correo
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Nahir (1 intervención) el 31/07/2012 03:36:02
Hola Juan soy nuevo en esto de los ticket y kisiera saber en que parte del codigo va esto:

char[] CORTAR_PAPEL=new char[]{0x1B,'m'}; // codigo q corta el papel
imp.write(CORTAR_PAPEL); // mando a la impresora

para poder cortal el papel.. saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por zeganet (1 intervención) el 25/03/2013 02:45:23
solo agrega ese metodo en la clase Ticket e invocala cuando quieras usarla

public String CortarHoja() {
return (char)27+ "m";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por angel (1 intervención) el 25/01/2013 05:41:20
holaa juan antonio..con respecto al codigo tengo un error...kiero mandar imprimir registros de una tabla y cuando tengo mas de 1 registro osea mas de un articulo...el ticket se imprime 2 veces :/..ojala me puedas ayudar..graciias :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Angel de Jesus (2 intervenciones) el 04/02/2013 00:52:31
Que tal Angel, yo tenia el mismo problema, para resolverlo son los ArrayList que esta en la clase Ticket, ya que al ser estaticos se conserva la informacion del producto anterior, asi que solo utiliza el metodo clear() en ellos al momento de generar un ticket, saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Juan Antonio Collantes Mejia (6 intervenciones) el 12/04/2013 22:27:16
AMIGOS NUEBAMENTE LES PONGO EL CODIGO DE IMPRESION JAVA SON 3 CLASES
es casi la misma clase q les puse al inicio solo tiene algunas variante espeor les sirva saludos
PRIMERA CLASE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package JCollantesImprimir;
import java.io.FileWriter;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Ticket{
    public Ticket(){}
        static ArrayList<String> CabezaLineas=new ArrayList<String>();
        static ArrayList<String> subCabezaLineas=new ArrayList<String>();
        static ArrayList<String> items=new ArrayList<String>();
        static ArrayList<String> totales=new ArrayList<String>();
        static ArrayList<String> LineasPie=new ArrayList<String>();
        public static void AddCabecera(String line){CabezaLineas.add(line);}
        public static void AddSubCabecera(String line){subCabezaLineas.add(line);}
        public static void AddItem(String cantidad,String item,String price,String total){
            OrderItem newItem = new OrderItem(' ');
            items.add(newItem.GeneraItem(cantidad,item,price,total));
        }
       public static void AddTotal(String name,String price){
           OrderTotal newTotal = new OrderTotal(' ');
           totales.add(newTotal.GeneraTotal(name, price));
       }
       public static void AddPieLinea(String line){LineasPie.add(line);}
       public static String DibujarLinea(int valor){
           String raya="";
           for(int x=0;x<valor;x++){raya+="-";}
           return raya;
       }
       public static String DarEspacio(){return "\n";}
       public static void SetFormato(FileWriter pw,int formato){
           try{
                char[] ESC_CUT_PAPER = new char[] { 0x1B, '!',(char)formato};
                pw.write(ESC_CUT_PAPER);
            }catch(Exception e){
                System.out.print(e);
            }
       }
       public static void ImprimirDocumento(String impresora,boolean abrir){
            try{
                //FileWriter imp = new FileWriter("LPT1");
                FileWriter imp = new FileWriter(impresora);
                char[] Caracter = new char[] { 0x1B, 'R',18};
                imp.write(Caracter);
                for(int cabecera=0;cabecera<CabezaLineas.size();cabecera++){
                    imp.write(CabezaLineas.get(cabecera));
                }
                for(int subcabecera=0;subcabecera<subCabezaLineas.size();subcabecera++){
                    imp.write(subCabezaLineas.get(subcabecera));
                }
                for(int ITEM=0;ITEM<items.size();ITEM++){
                    imp.write(items.get(ITEM));
                }
                for(int total=0;total<totales.size();total++){
                   imp.write(totales.get(total));
                }
                for(int pie=0;pie<LineasPie.size();pie++){
                    imp.write(LineasPie.get(pie));
                }
                for(int u=0;u<=10;u++){imp.write("\n");}
                //corta el papel
                char[] CORTAR_PAPEL=new char[]{0x1B,'m'};
                imp.write(CORTAR_PAPEL);
                if(abrir){
                    char ABRIR_GAVETA[]={(char)27,(char)112,(char)0,(char)10,(char)100};
                    imp.write(ABRIR_GAVETA);
                }
                imp.close();
                //limpio las listas que contiene los datos
                CabezaLineas.removeAll(CabezaLineas);
                subCabezaLineas.removeAll(subCabezaLineas);
                items.removeAll(items);
                totales.removeAll(totales);
                LineasPie.removeAll(LineasPie);
            }catch(Exception e){
                JOptionPane.showMessageDialog(null,"Error al Imprimir:\n"+e.getMessage());
                CabezaLineas.removeAll(CabezaLineas);
                subCabezaLineas.removeAll(subCabezaLineas);
                items.removeAll(items);
                totales.removeAll(totales);
                LineasPie.removeAll(LineasPie);
            }
      }
       public static void ImprimirDocumento(String impresora,boolean abrir,
               boolean formatoCabecera,int formato){
            try{
                //FileWriter imp = new FileWriter("LPT1");
                FileWriter imp = new FileWriter(impresora);
                for(int cabecera=0;cabecera<CabezaLineas.size();cabecera++){
                    SetFormato(imp,27);
                    imp.write(CabezaLineas.get(cabecera));
                }
                for(int subcabecera=0;subcabecera<subCabezaLineas.size();subcabecera++){
                    imp.write(subCabezaLineas.get(subcabecera));
                }
                for(int ITEM=0;ITEM<items.size();ITEM++){
                    imp.write(items.get(ITEM));
                }
                for(int total=0;total<totales.size();total++){
                   imp.write(totales.get(total));
                }
                for(int pie=0;pie<LineasPie.size();pie++){
                    imp.write(LineasPie.get(pie));
                }
                for(int u=0;u<=10;u++){imp.write("\n");}
                //corta el papel
                char[] CORTAR_PAPEL=new char[]{0x1B,'m'};
                imp.write(CORTAR_PAPEL);
                if(abrir){
                    char ABRIR_GAVETA[]={(char)27,(char)112,(char)0,(char)10,(char)100};
                    imp.write(ABRIR_GAVETA);
                }
                imp.close();
                //limpio las listas que contiene los datos
                CabezaLineas.removeAll(CabezaLineas);
                subCabezaLineas.removeAll(subCabezaLineas);
                items.removeAll(items);
                totales.removeAll(totales);
                LineasPie.removeAll(LineasPie);
            }catch(Exception e){
                JOptionPane.showMessageDialog(null,"Error al Imprimir:\n"+e.getMessage());
                CabezaLineas.removeAll(CabezaLineas);
                subCabezaLineas.removeAll(subCabezaLineas);
                items.removeAll(items);
                totales.removeAll(totales);
                LineasPie.removeAll(LineasPie);
            }
      }
      public static void main(String[] args){}
}

SEGUNDA CLASE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package JCollantesImprimir;
public class OrderItem{
    char[] temp=new char[]{ ' ' };
    public OrderItem(char delimit){temp=new char[]{delimit };}
    public String GetItemCantidad(String orderItem){
        String[] delimitado=orderItem.split(""+temp);
        return delimitado[0];
    }
    public String GetItemNombre(String orderItem){
        String[] delimitado=orderItem.split(""+temp);
        return delimitado[1];
    }
    public String GetItemPrecio(String orderItem){
        String[] delimitado=orderItem.split(""+temp);
        return delimitado[2];
    }
    public String GetItemTotal(String orderItem){
        String[] delimitado=orderItem.split(""+temp);
        return delimitado[3];
    }
    public String GeneraItem(String cantidad, String nombre, String precio,String total){
        return cantidad+temp[0]+nombre+temp[0]+precio+temp[0]+total;
    }
 }

TERCERA CLASE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package JCollantesImprimir;
public class OrderTotal{
    char[] temp=new char[] { ' ' };
    public OrderTotal(char delimit){temp=new char[]{delimit};}
    public String GetTotalNombre(String totalItem){
        String[] delimitado=totalItem.split(""+temp);
        return delimitado[0];
    }
    public String GetTotalCantidad(String totalItem){
        String[] delimitado=totalItem.split(""+temp);
        return delimitado[1];
    }
    public String GeneraTotal(String Nombre, String precio){
        return Nombre+temp[0]+temp[0]+temp[0]+temp[0]+precio;
    }
}

LUEGO DE ESTO SOLO TIENE Q CREAR UNA INSTANCIA DE LA PRIMERA CLASE

Ticket ticket=new Ticket();

aki les pongo una porcion de codigo para imprimir un ticket con la informacion de un JTable

el codigo esta sencillo para q lo aprendan y entiendad para q es cada metodo de la clase Ticket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public void imprimir(){
    try{
        Date date=new Date();
        SimpleDateFormat fecha=new SimpleDateFormat("dd/MM/yyyy");
        SimpleDateFormat hora=new SimpleDateFormat("hh:mm:ss aa");
        Ticket ticket = new Ticket();
        ticket.AddCabecera("             SANDALS RESTAURANT");
        ticket.AddCabecera(ticket.DarEspacio());
        ticket.AddCabecera("     tlf: 222222  r.u.c: 22222222222");
        ticket.AddCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera(ticket.DibujarLinea(40));
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera("     Ticket Factura No:'003-000011'");
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera("        "+fecha.format(date) + " " + hora.format(date));
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera("         Mesa "+jTextField7.getText()+" Mozo "+jTextField8.getText()+" Pers "+jTextField9.getText());
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera(ticket.DibujarLinea(40));
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera("cant      producto         p.u     total");
        ticket.AddSubCabecera(ticket.DarEspacio());
        ticket.AddSubCabecera(ticket.DibujarLinea(40));
        ticket.AddSubCabecera(ticket.DarEspacio());
       for(int y=0;y<jTable1.getRowCount();y++){
           //cantidad de decimales
           NumberFormat nf = NumberFormat.getNumberInstance(Locale.ENGLISH);
           DecimalFormat form = (DecimalFormat)nf;
           form.applyPattern("#,###.00");
           //cantidad
           String cantidad=jTable1.getValueAt(y,0).toString();
           if(cantidad.length()<4){
               int cant=4-cantidad.length();String can="";
               for(int f=0;f<cant;f++){can+=" ";}cantidad+=can;
           }
            //items
            String item=jTable1.getValueAt(y,1).toString();
            if(item.length()>17){item=item.substring(0,16)+".";}
            else{
                int c=17-item.length();String comple="";
                for(int y1=0;y1<c;y1++){comple+=" ";}item+=comple;
            }
            //precio
            String precio=jTable1.getValueAt(y,2).toString();
            double pre1=Double.parseDouble(precio);
            precio=form.format(pre1);
            if(precio.length()<8){
                int p=8-precio.length();String pre="";
                for(int y1=0;y1<p;y1++){pre+=" ";}precio=pre+precio;
            }
            //total
            String total=jTable1.getValueAt(y,3).toString();
            total=form.format(Double.parseDouble(total));
            if(total.length()<8){
                int t=8-total.length();String tota="";
                for(int y1=0;y1<t;y1++){tota+=" ";}total=tota+total;
            }
            //agrego los items al detalle
            ticket.AddItem(cantidad,item,precio,total);
            //ticket.AddItem("","","",ticket.DarEspacio());
        }
        ticket.AddItem(ticket.DibujarLinea(40),"","","");
        ticket.AddTotal("",ticket.DarEspacio());
        ticket.AddTotal("total                   ",jTextField1.getText());
        ticket.AddTotal("",ticket.DarEspacio());
        ticket.AddTotal("Igv                     ",jTextField2.getText());
        ticket.AddTotal("",ticket.DarEspacio());
        ticket.AddTotal("total venta             ",jTextField3.getText());
        ticket.AddTotal("",ticket.DarEspacio());
        ticket.AddTotal("paga con                ",jTextField4.getText());
        ticket.AddTotal("",ticket.DarEspacio());
        ticket.AddTotal("vuelto                  ",jTextField5.getText());
        ticket.AddPieLinea(ticket.DarEspacio());
        ticket.AddPieLinea("Gracias por su Preferencia");
        ticket.ImprimirDocumento();
    }catch(Exception e){System.out.print("\nerror "+e.toString());}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por beto (1 intervención) el 12/06/2013 06:29:23
Hola:
Implemente las tres clases y todo bien sin ningun error salvo, que cuando llamo al metodo imprimir este arroja la excepcion mostrando el mensaje de error: No se puede imprimir
Null
La excepcion es JavaNullPointerException
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Angel Valtierra (2 intervenciones) el 03/07/2013 01:56:28
Buena alternativa para cortar el papel, otra manera es imprimiendo una imagen en blanco pequena, de este modo genera el corte, esto utilizando las mismas clases de tu primer ejemplo...

Aqui hay un ejemplo muy util

http://docs.oracle.com/javase/6/docs/technotes/guides/jps/spec/appendix_printGIF.fm.html#7083

Otra cosa, no sabras como imprimir una imagen pero sin cortar el papel del ticket???

Ademas cuando imprimo una imagen la calidad decae horriblemente, saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por angel (1 intervención) el 21/11/2013 01:08:21
Amigo eh implementado tu codigo pero aun tengo un error, soy nuevo en esto y neta que quisiera que me ayudaras como lograste imprimir tu documento.
me marca un error en la parte de en el metodo imprimir()

ticket.AddPieLinea("Gracias por su Preferencia");
ticket.ImprimirDocumento();

como lo mandas a llamar todo esto. tienes las clases ya implementas porfavos... De antemano muchas graciaas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por felipe (2 intervenciones) el 19/08/2014 17:41:41
cuales son los parametros que le envias al metodo ImprimirDocumento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por diego cares (1 intervención) el 04/11/2014 20:01:29
estimado cual deberia ser el parametro que se le envie mediante el metodo?
ya que tambien estoy teniendo problemas en lo mismo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Joel (1 intervención) el 26/09/2015 13:57:16
Hola prove el primer codigo para hacer una prueba con la impresora que tengo la señal le llega a la impresora pero se queda parada con el papel metido cuando le imprimo no se que puede ser ya que soy novato todavia la impresora es HP Photosmart C3100
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por UBALDO (2 intervenciones) el 06/11/2015 22:17:40
Hola que tal joel si pudiste resolver el como imprimir ticket... me puedes ayudar son novato aun en esto... Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por UBALDO (2 intervenciones) el 06/11/2015 22:19:08
Hola disculpa soy novato en esto... me podrias decir que parametros pasarle a ticket.imprimirDocumento()... gracias de antemano. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por francisco javier (1 intervención) el 03/01/2016 22:01:28
cuales son los parametros a recibir del metodo ImprimirDocumento(); saludos ¡
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por fredy (1 intervención) el 09/01/2016 17:13:41
mira no soy dueño del codigo, pero segun veo, hay que pasarle un string y un boolean, osea que los parametros son el nombre de la impresora y verdadero o falso.
Asi:
String miImpresora="nombre de la impresora que tenga instalada";
ticket.ImprimirDocumento(miImpresora,true); //true para abrir y false para que no lo haga

fijate que tambien podes llamar al metodo imprimir con cuatro paremetros. claro. pero asi deberia de funcionarte.
cualquier cosas me avisas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Edgar

RE:Imprimir ticket

Publicado por Edgar (2 intervenciones) el 12/07/2016 23:19:57
Hola buen día, también implementé las tres clase, pero no me imprime ningún texto, por favor si podrían colocar el código completo, gracias por su atención, soy novato, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por FRANCISCO ALBERTO (1 intervención) el 19/01/2017 02:17:42
Me puedes decir que campos y/o objetos utilizastes o si puedes mandar Foto de la pantalla para ver los campos utilizados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por JOSE (1 intervención) el 03/03/2020 22:32:10
compañeros necesito de su ayuda . estoy creando un programa y necesito imprimir una tirilla y que me la corte , estoy utilizando un aimpresora EPSON TM T88V el codigo que utilizo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
String printName=impresora;
//aqui creo un arreglo para obtener todas las impresoras que tengo instaladas
 PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null );
 
  //aqui le digo con que impresora voy a trabajar
        AttributeSet aset = new HashAttributeSet();
        aset.add(new PrinterName(printName, null));
        services = PrintServiceLookup.lookupPrintServices(null, aset);
 
 
 
 
//creo mi linea de comandos que voy a mandar a imprimir
 String zplCommand ="            "+nombreestablecimiento+"      \n"
                   + "            "+nombrepropietario+"             \n"
                  + "           NIT: "+nit+"        \n"
                  + "    "+direccion+"        \n"
                 + "           Telefono:"+telefono+"        \n"
                + " =======================================\n"
                  + "    Comprobante No:  "+comprobante+"  \n"
                 + "    PLACA:"+ placa+" TANQUE:"+ tanque+" \n"
                 + "    OPERADORA : "+operadora+"  \n"
                  + "   Tipo de Cobro : UNICO          \n"
                 + "   ENTRADA : "+entrada+"        \n"
 
               + " =======================================\n"
                    + "          TIQUETE DE INGRESO         \n"
                    + "                            \n"
 
                   + " "+texto+"                            \n"
 
                      + "                            \n"
                   + "       Software : Asell      \n"
                     + "         Cel: 3173240626     \n"
                  + "    ------------------------------------  \n"
          + "                            \n"
          + "                            \n"
          + "                                                        \n"
          + "                            \n"
          + "                                                \n"
 
 
 
 
 
 
 
        ;
 
 
 
// convertimos el comando a bytes
byte[] by = zplCommand.getBytes();
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(by, flavor, null);
 
// creamos el printjob
DocPrintJob job = services[0].createPrintJob();
try {
    // imprimimos
    job.print(doc, null);
 
 
    // TODO add your handling code here:
} catch (PrintException ex) {
 
}


e utiliado este codigo para corte como ustedes lo indican pero no funciona:

1
2
3
4
5
6
7
8
9
10
try {
    FileWriter imp = new FileWriter("EPSON TM-T88V Receipt5");
 
    //corta el papel
 
 
    char[] CORTAR=new char[]{0x1B,'m'};
    imp.write(CORTAR);
} catch (Exception e) {
}



la tirilla me genera pero no la corta que sera?'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Jesús (1 intervención) el 23/10/2013 16:38:11
Oye y podrías mostrar el código ya corregido?? Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por jorge (1 intervención) el 07/11/2013 01:50:06
Este código trabaja bien!!!!!
lo que no he podido imprimir es una secuencia de escapes desde el ArrayList
para imprimir diferentes tipos de letras como negrila, comprimada, etc
en una miniprinter matrixial si alguien tiene algún tip o algo que ayude a los que
estamos iniciando en esto se lo agradecemos de antemano
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por felipe (2 intervenciones) el 19/08/2014 16:27:45
hola buen día vi tu código me funciono pero me falta cortar el ticket como le ago
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por laura (1 intervención) el 19/11/2015 19:25:33
crea el programa para un banco.La necesidad es mostrar en una pantalla y decir el numero del ticket que toca pasar. Los números deben ser grandes y muy visibles.

es usando listas enlazadas
doblemente enlazadas
o circulares
es en jsp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Imprimir ticket

Publicado por anonymous (3 intervenciones) el 09/03/2017 22:00:34
hola felipe como te funciono , ya le mande el nombre de mi impresora y porninfun lado imprime que puedo hacer ayudaa...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Juan Antonio Collantes Mejía (1 intervención) el 01/06/2017 23:13:54
Buenas tarde,

Veo que tienen algunas dudas con el código las se no he contestado por estar ausente mucho tiempo.

Si gustan les puedo masa e el proyecto para que no tengan problemas y lo puedan testear sin problemas.

Incluso pueden probar la impresión sin tener una ticketera o impresora ya que por ejemplo en el método imprimir documento recibe 2 parámetros el primero es la impresora si en este parámetro envían cualquier cadena creará un archivo con este nombre y podrar abrirlo y ver como les va quedando su ticket.

Mi correo [email protected]

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por anonimo (1 intervención) el 06/01/2018 23:17:44
y en que carpeta se guardaria el archivo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Leticia (2 intervenciones) el 03/05/2018 19:50:13
Hola juan antonio, eh hecho lo que tienes en tu codigo, sin embargo no me queda!, te he mandado un correo espero lo leeas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por erpom (1 intervención) el 23/03/2019 18:16:10
se puede poner fuente a la impresión?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Ayrton German Alberto (1 intervención) el 07/06/2019 22:52:54
Como podría cambiar tamaño y estilos a la letra que se imprime en la ticket según tu código.

Lo que quiero es algunos titulos sea mas grande el tamañao , ponerle negrita ,etc;

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por José Rodriguez (1 intervención) el 18/01/2021 18:25:27
Llamo la función cortar y no funciona y le envío el parámetro a imprimír documento (true) para abrir la caja y tampoco funciona, la caja de punto la conecto a través de rj11 a la impresora. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir ticket

Publicado por Onesimo (1 intervención) el 05/01/2022 01:25:17
Buena tarde. le comento que estoy programando una impresión de ticket de un punto de venta. mi pregunta es ¿Hay forma de modificar el tamaño de letra (Fuente) a la hora de la impresión?. ¿Qué libreria se podria ocupar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar