Tenho uma aplicação web que imprime etiquetas usando uma impressora “zebra”, que utiliza uma linguagem própria.
Não é gerado um arquivo para depois imprimi-lo, os dados são impressos diretamente pra impressora.
Isso funciona normalmente na maquina local. A impressora está conectada na minha máquina.
Mas não funciona com a aplicação instalada num servidor em outra maquina, pq o servidor não encontra a impressora que está na minha máquina.
Tem como o servidor encontrar a impressora que esta na minha máquina local?
Segue abaixo o código que eu utilizo:
PrintService psZebra = null;
String sPrinterName = null;
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
for (int i = 0; i < services.length; i++) {
PrintServiceAttribute attr = services[i].getAttribute(PrinterName.class);
sPrinterName = ((PrinterName) attr).getValue();
if (sPrinterName.toLowerCase().indexOf("zebra") >= 0) {
psZebra = services[i];
break;
}
}
if (psZebra == null) {
System.out.println("Zebra printer is not found.");
return;
}
DocPrintJob job = psZebra.createPrintJob();
String s = "^XA^FO100,40^BY3^B3,,30^FD123ABC^XZ";
byte[] by = s.getBytes();
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(by, flavor, null);
job.print(doc, null);
Valeu
cara,
eu uso esse código:
Desktop.getDesktop().print(new File("diretorio/arquivo/etc"));
ele imprime na impressora padrão;
NUNCA tentei imprimir etiqueta com esse código;
se não me engano funciona só na versão 6 do java.
Boa sorte! ^^’
[quote=pedruhenrik]cara,
eu uso esse código:
Desktop.getDesktop().print(new File("diretorio/arquivo/etc"));
ele imprime na impressora padrão;
NUNCA tentei imprimir etiqueta com esse código;
se não me engano funciona só na versão 6 do java.
Boa sorte! ^^’[/quote]
Não funcionou.
Essa classe não consegue imprimir na minha impressora.
try { // Localiza todas as impressoras com suporte a arquivos txt
PrintService[] servicosImpressao = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.AUTOSENSE, null);
System.out.println("Impressoras com suporte: "
+ servicosImpressao.length);
// Localiza a impressora padrão
PrintService impressora = PrintServiceLookup
.lookupDefaultPrintService();
System.out.println("Impressora: " + impressora.getName());
System.out.println("Imprimindo arquivo");
// Definição de atributos do conteúdo a ser impresso:
DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
// Atributos de impressão do documento
HashDocAttributeSet attributes = new HashDocAttributeSet();
// InputStream apontando para o conteúdo a ser impresso
FileInputStream fi = new FileInputStream(in);
// Cria um Doc para impressão a partir do arquivo exemplo.txt
Doc documentoTexto = new SimpleDoc(fi, docFlavor, attributes);
// Configura o conjunto de parametros para a impressora
PrintRequestAttributeSet printerAttributes = new HashPrintRequestAttributeSet();
System.out.println(mostrarDialogo);
// mostrarDialogo = false;
if (mostrarDialogo) { // exibe um dialogo de configuracoes de
// impressao
PrintService servico = ServiceUI.printDialog(null, 320, 240,
servicosImpressao, impressora, docFlavor,
printerAttributes);
if (servico != null) {
DocPrintJob printJob = servico.createPrintJob();
printJob.print(documentoTexto, printerAttributes);
}
} else {
// Cria uma tarefa de impressão
DocPrintJob printJob = impressora.createPrintJob();
// Adiciona propriedade de impressão: imprimir duas cópias
printerAttributes.add(new Copies(copInt));
// Imprime o documento sem exibir uma tela de dialogo
printJob.print(documentoTexto, printerAttributes);
}
}
…funciona???