En este grupo En todos

Foro de Java



Imprimir un ticket

Escrito por Nadalie
el 31/08/2007

Hola! Estoy haciendo una aplicacion de gestion de un bar, y necesito imprimir los tickes que genero en los pedidos, que clases se necesitan para imprimir? ¿Existe alguna manera de tener una "plantilla" para los tickets? Me refiero a crear una e imprimirlos los tickets en base a ella... Habia pensado sino en escribir los datos en un fichero e imprimir este. Si sabeis como se podria imprimir un fichero de texto también sería de ayuda.

Muchas Gracias!

Chuidiang Chuidiang
Madrid, España
Escrito por Chuidiang Chuidiang
el 31/08/2007

Hola:

Un fichero de texto se imprime con comandos del sistema. En windows creo recordar que era "print". En linux puede ser lp o lpr o algo así.

Ejecuta print con Runtime.getRuntime.exec() .

Si no quieres imprimir el fichero de texto, sino imprmir directamente, aquí tienes un pequeño Tutorial de cómo imprimir en java .

Se buena.

Escrito por Nadalie
el 31/08/2007

Muchas Gracias por el manual y la respuesta!

Para hacer alguna plantilla existe alguna forma? O seria ir dando posiciones de donde se quieren imprimir las cosas?

Juan Antonio Collantes Mejía
Computacion e informatica cima's (java...
Escrito por Juan Antonio Collantes Mejía
el 03/05/2010

Q fue de la Impresion

Juan Antonio Collantes Mejía
Computacion e informatica cima's (java...
Escrito por Juan Antonio Collantes Mejía
el 18/06/2010

Suerte con la Impresion del Tickets

Juan Antonio Collantes Mejía
Computacion e informatica cima's (java...
Escrito por Juan Antonio Collantes Mejía
el 12/04/2013

AMIGOS NUEBAMENTE LES PONGO EL CODIGO DE IMPRESION JAVA SON 3 CLASES

PRIMERA CLASE

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

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


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

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