Java - impresion en java

 
Vista:

impresion en java

Publicado por daniela (37 intervenciones) el 16/05/2011 05:09:24
Hola a todos, tengo un problema al querer imprimir un ticket con la impresora epson tmt81, si imprime ya bien mis tickets, pero jamas los corta, ese es el unico problema, me han dicho que modifique ciertas cosas , pero la vdd no he podido, he intentado pero no sale, por favor si alguien me dijero como poder cortar mi ticket, muchas muchas gracias a todos :D y en vdd, ojala me puedan ayudar con mi codigo.
import java.awt.Image;
import java.awt.PrintJob;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
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.ImageIcon;
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>();
Date date=new Date();
SimpleDateFormat fecha=new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat hora=new SimpleDateFormat("hh:mm:ss aa");

public void ticket() throws SQLException{
AddCabecera("");
AddCabecera(DarEspacio());
AddCabecera(" Cafe internet: Anita");
AddCabecera(DarEspacio());
AddCabecera(" Tulancingo, EDO de Hidalgo.");
AddCabecera(DarEspacio());
AddCabecera(" 77 32226712");
AddCabecera(DarEspacio());
AddSubCabecera(" "+fecha.format(date) + " " + hora.format(date));
AddSubCabecera(DarEspacio());
AddSubCabecera(DibujarLinea(40));
AddTotal("CAMBIO","15.00");
AddTotal("",DarEspacio());
AddTotal("",DarEspacio());
AddPieLinea(DibujarLinea(40));
AddPieLinea(DarEspacio());
AddPieLinea("Guarde su ticket para cualquier aclaracion");
AddPieLinea(DarEspacio());
AddPieLinea("Gracias por su visita");
//AddPieLinea(DarEspacio());
ImprimirDocumento("EPSON TM-T81Receipt");

}

}
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 precioFinal, String equis, String ye){
OrderItem newItem = new OrderItem(' ');
items.add(newItem.GeneraItem(cantidad,item, price, precioFinal, equis, ye));
}
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 impresora){
String cadena="";
for(int cabecera=0;cabecera<CabezaLineas.size();cabecera++ ){cadena+=CabezaLineas.get(cabecera);}
for(int subcabecera=0;subcabecera<subCabezaLineas.size();subcabecera++){cadena+=subCabezaLineas.get(subcabecera);}
for(int ITEM=0;ITEM<items.size();ITEM++){cadena+=items.get (ITEM);}
for(int total=0;total<totales.size();total++){cadena+=totales.get(total);}
for(int pie=0;pie<LineasPie.size();pie++){cadena+=LineasPie.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){ }
}

}Cuando imprimo mi ticket sale ya bien:

Cafe internet: Anita
Tulancingo, EDO de Hidalgo.
77 32226712
10-10-2011 14:00:00
========================
Cambio: 15.00
========================
Guarde su ticket pa cualquier aclaracion
Gracias por su visita
(ahora el corte????)
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

impresion en java

Publicado por Tom (1831 intervenciones) el 16/05/2011 09:20:22
Según el manual, las operaciones "especiales" de la impresora se usan enviando caracteres del font "control".

Para cortar:

- Selecciona tamaño de font 10
- Selecciona font "control"
- Envía el carácter 'F'

Aunque, también habla de un "atajo", enviando en cualquier font caracteres mayores que 0x80 (mayores que 128, o sea fuera del rango normal).

Así, para cortar el papel enviarías un byte 0x9D, cosa difícil en java, ya que el tipo byte es unsigned ...

El manual está en las páginas de Epson, y en mil sitios más:

http://postechgroup.com/updata/support/drivers/EPSON/ManualUS.pdf
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

impresion en java

Publicado por Tom (1831 intervenciones) el 16/05/2011 09:23:07
Perdón, el tipo byte es signed, es lo que quería escribir
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