Foro sobre Java EE > JAVA - Problemas con Impresora termica Bixolon conectada por USB
Cuando presiono el boton que manda las instrucciones para imprimir a la impresora termica, no se manda la orden. Los datos de la impresión los guarda en un TXT. Al parecer las impresoras termicas conectadas por USB tienen este problema (al enviar el comando a una impresora termica conectada por serial, por lo que he leido se imprime de inmediato). Si alguien me puede ayudar en la solución de este problema.
class MyPrintable implements Printable { public int print(Graphics g, PageFormat pf, int pageIndex) { if (pageIndex != 0) return NO_SUCH_PAGE; Graphics2D g2 = (Graphics2D) g; g2.setFont(new Font("Serif", Font.PLAIN, 36)); g2.setPaint(Color.black); g2.drawString("www.java2s.com", 100, 100); Rectangle2D outline = new Rectangle2D.Double(pf.getImageableX(), pf.getImageableY(), pf .getImageableWidth(), pf.getImageableHeight()); g2.draw(outline); return PAGE_EXISTS; } }
/** * * @author spro */ public class pruebaImpresora extends javax.swing.JDialog {
/** * Creates new form pruebaImpresora */ public pruebaImpresora(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); }
/** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
public void ImprimeTermico() { try { //FileWriter fw = new FileWriter("LPT1:"); FileWriter fw = new FileWriter("USB001"); //PrintWriter pw = new PrintWriter(fw);
//FileWriter output = new FileWriter("LPT1:"); BufferedWriter salida = new BufferedWriter(fw);
//Estos son comandos de control para la impresora termica, verifica si son compatibles //para la impresora que estes usando writeln("XXXXXXXXXXXXXXX", salida); writeln("XXXXXXXXXXXXXXX", salida); writeln("XXXXXXXXXXXXXXX", salida); writeln("AU", salida); writeln("OD", salida);
//Este es el archivo interno de la impresora, hay que borrarlo para que no se duplique // en cada impresion writeln("FK\"NUEVAIMPRESION\"", salida); writeln("FK\"NUEVAIMPRESION\"", salida); writeln("FS\"NUEVAIMPRESION\"", salida);
//Este es el tamño de la impresion, verifica cual se adapta al tamaño de la hoja writeln("q664", salida); writeln("Q1152,B24+24", salida); writeln("S3", salida); writeln("D8", salida); writeln("ZT", salida); writeln("TTh:m", salida); writeln("TDy2.mn.dd", salida);
// Imprimir lo que necesites // Verifica los parametros, la A es para definir que es un alfanumerico, si es una B es //para Codigos de barras, los siguientes creo que son , posicion x y y, tamaño, orientacion // y no se que mas sean writeln("A100,20,5,3,1,1,N,\"" + "MENSAJE A IMPRIMIR" + "\"", salida); //Con esto ultimo se cierra el archivo de trabajo de la impresora writeln("FE", salida); writeln("FR\"NUEVAIMPRESION\"", salida); writeln("P1", salida); writeln("XXXXXXXXXXXXXXX", salida); writeln("XXXXXXXXXXXXXXX", salida); writeln("XXXXXXXXXXXXXXX", salida); salida.close();
}catch (IOException e) { System.out.println(e); }
}
public void writeln(String linea, BufferedWriter _bufOutput){ try {
/* // Create file //FileWriter fstream = new FileWriter("LPT1"); BufferedWriter out = new BufferedWriter(fstream); out.write("Hello Java"); //Close the output stream out.close(); */
// Create file //FileWriter fstream = new FileWriter("out.txt"); /*BufferedWriter _bufOutput = new BufferedWriter(fstream);
Cuando presiono el boton que manda las instrucciones para imprimir a la impresora termica, no se manda la orden. Los datos de la impresión los guarda en un TXT. Al parecer las impresoras termicas conectadas por USB tienen este problema (al enviar el comando a una impresora termica conectada por serial, por lo que he leido se imprime de inmediato). Si alguien me puede ayudar en la solución de este problema.
El codigo es el siguiente.
package sistemavip;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import static java.awt.print.Printable.NO_SUCH_PAGE;
import static java.awt.print.Printable.PAGE_EXISTS;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
class MyPrintable implements Printable {
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex != 0)
return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 36));
g2.setPaint(Color.black);
g2.drawString("www.java2s.com", 100, 100);
Rectangle2D outline = new Rectangle2D.Double(pf.getImageableX(), pf.getImageableY(), pf
.getImageableWidth(), pf.getImageableHeight());
g2.draw(outline);
return PAGE_EXISTS;
}
}
/**
*
* @author spro
*/
public class pruebaImpresora extends javax.swing.JDialog {
/**
* Creates new form pruebaImpresora
*/
public pruebaImpresora(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jButton1.setText("Imprimir");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(185, Short.MAX_VALUE)
.addComponent(jButton1)
.addGap(176, 176, 176))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(138, 138, 138)
.addComponent(jButton1)
.addContainerGap(139, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
public void ImprimeTermico()
{
try
{
//FileWriter fw = new FileWriter("LPT1:");
FileWriter fw = new FileWriter("USB001");
//PrintWriter pw = new PrintWriter(fw);
//FileWriter output = new FileWriter("LPT1:");
BufferedWriter salida = new BufferedWriter(fw);
//Estos son comandos de control para la impresora termica, verifica si son compatibles
//para la impresora que estes usando
writeln("XXXXXXXXXXXXXXX", salida);
writeln("XXXXXXXXXXXXXXX", salida);
writeln("XXXXXXXXXXXXXXX", salida);
writeln("AU", salida);
writeln("OD", salida);
//Este es el archivo interno de la impresora, hay que borrarlo para que no se duplique
// en cada impresion
writeln("FK\"NUEVAIMPRESION\"", salida);
writeln("FK\"NUEVAIMPRESION\"", salida);
writeln("FS\"NUEVAIMPRESION\"", salida);
//Este es el tamño de la impresion, verifica cual se adapta al tamaño de la hoja
writeln("q664", salida);
writeln("Q1152,B24+24", salida);
writeln("S3", salida);
writeln("D8", salida);
writeln("ZT", salida);
writeln("TTh:m", salida);
writeln("TDy2.mn.dd", salida);
// Imprimir lo que necesites
// Verifica los parametros, la A es para definir que es un alfanumerico, si es una B es
//para Codigos de barras, los siguientes creo que son , posicion x y y, tamaño, orientacion
// y no se que mas sean
writeln("A100,20,5,3,1,1,N,\"" + "MENSAJE A IMPRIMIR" + "\"", salida);
//Con esto ultimo se cierra el archivo de trabajo de la impresora
writeln("FE", salida);
writeln("FR\"NUEVAIMPRESION\"", salida);
writeln("P1", salida);
writeln("XXXXXXXXXXXXXXX", salida);
writeln("XXXXXXXXXXXXXXX", salida);
writeln("XXXXXXXXXXXXXXX", salida);
salida.close();
}catch (IOException e) {
System.out.println(e);
}
}
public void writeln(String linea, BufferedWriter _bufOutput){
try
{
/*
// Create file
//FileWriter fstream = new FileWriter("LPT1");
BufferedWriter out = new BufferedWriter(fstream);
out.write("Hello Java");
//Close the output stream
out.close();
*/
// Create file
//FileWriter fstream = new FileWriter("out.txt");
/*BufferedWriter _bufOutput = new BufferedWriter(fstream);
_bufOutput.write(linea, 0, linea.length());
_bufOutput.newLine(); */
_bufOutput.write(linea, 0, linea.length());
_bufOutput.newLine();
}catch (IOException e) {
e.printStackTrace();
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ImprimeTermico();
}