Lembrando que utilizei para gerar código de barras em etiquetas.
public void geraEtiquaImpressora(List subprodutos)
{
PrintService psZebra;
String sPrinterName;
psZebra = null;
sPrinterName = "Zebra TLP2844";
PrintService services[] = PrintServiceLookup.lookupPrintServices(null, null);
PrintService aprintservice[];
int k = (aprintservice = services).length;
for(int j = 0; j < k; j++)
{
PrintService ps = aprintservice[j];
if(sPrinterName.equalsIgnoreCase(ps.getName()))
psZebra = ps;
}
if(psZebra == null)
{
System.out.println("Zebra printer is not found.");
return;
}
try
{
System.out.println((new StringBuilder("Found printer: ")).append(sPrinterName).toString());
DocPrintJob job = psZebra.createPrintJob();
int altura = 160;
int largura = 240;
int entreEtq = 14;
int alturaBarra = 72;
int qtdCol = 3;
int col = 1;
int topoX = 24;
int topoY = 2;
int x = topoX;
int y = topoY;
String s = "Q160,016\nq240\nrN\nS1\nD7\nZT\nR24,16\nJB\nOD\nN\n";
for(Iterator iterator = subprodutos.iterator(); iterator.hasNext();)
{
Subproduto sub = (Subproduto)iterator.next();
int qtdProd = sub.getQtdeUnitariaEntradaSaida().intValue();
for(int i = 0; i < qtdProd; i++)
if(col < qtdCol)
{
int xAux = x;
int yAux = y;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,3,1,1,N,\"REF ").append(sub.getSubReferencia()).append("\"\n").toString();
x += 160;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,4,1,1,N,\"").append(sub.getTamanho().getDescricao()).append("\"\n").toString();
x -= 160;
y += 24;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,3,1,1,N,\"").append(sub.getProduto().getModelo()).append("\"\n").toString();
y += 24;
s = (new StringBuilder(String.valueOf(s))).append("B").append(x).append(",").append(y).append(",0,E30,2,4,").append(alturaBarra).append(",B,\"").append(sub.getCodigoDeBarra()).append("\"\n").toString();
col++;
x = xAux + largura + entreEtq;
y = yAux;
} else
{
int yAux = y;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,3,1,1,N,\"REF ").append(sub.getSubReferencia()).append("\"\n").toString();
x += 160;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,4,1,1,N,\"").append(sub.getTamanho().getDescricao()).append("\"\n").toString();
x -= 160;
y += 24;
s = (new StringBuilder(String.valueOf(s))).append("A").append(x).append(",").append(y).append(",0,3,1,1,N,\"").append(sub.getProduto().getModelo()).append("\"\n").toString();
y += 24;
s = (new StringBuilder(String.valueOf(s))).append("B").append(x).append(",").append(y).append(",0,E30,2,4,").append(alturaBarra).append(",B,\"").append(sub.getCodigoDeBarra()).append("\"\n").toString();
col = 1;
x = topoX;
y = yAux + altura + entreEtq;
}
}
s = (new StringBuilder(String.valueOf(s))).append("P1\n").append("FE\n").toString();
byte by[] = s.getBytes();
DocFlavor flavor = javax.print.DocFlavor.BYTE_ARRAY.AUTOSENSE;
javax.print.Doc doc = new SimpleDoc(by, flavor, null);
System.out.println("Pronti alla stampa");
job.print(doc, null);
System.out.println("Stampa inviata");
}
catch(Exception e)
{
e.printStackTrace();
}
return;
}