Java - Ayuda para generar ticket en netbeans

 
Vista:
Imágen de perfil de Karina Garnica
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para generar ticket en netbeans

Publicado por Karina Garnica (9 intervenciones) el 29/07/2019 03:45:25
HOLA
Soy algo nueva en el tema... estoy haciendo un "punto de renta :v" para una tienda, y requiero poder imprimir tickets. He buscado y leído mucho sobre el tema, pero no lo he logrado.
Se supone que tengo una clase para generar el ticket, esa clase llama a la impresora y lo compruebo de forma visible, pero simplemente no imprime, ni marca algún error, también intenté ver en consola lo que se supone que estoy mandando a imprimir pero no es posible.
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
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Ayuda para generar ticket en netbeans

Publicado por souquest (15 intervenciones) el 29/07/2019 08:45:14
que tal si pones lo que tienes hecho hasta ahora del programa? si no yo, por mi parte, solo puedo recomendarte libros o cursos online... no?
No puedo hacer el programa entero
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 Karina
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para generar ticket en netbeans

Publicado por Karina (9 intervenciones) el 30/07/2019 01:08:42
Este es el código que tengo para generar el ticket, lo tomé de interneth y solo los ajusté... recibe los datos desde la clase princip1, o bueno, los toma de forma estática

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