Prezados, boa tarde.
Consegui desenvolver a parte de envio da NFSe e agora me resta imprimir o cupom para o meu cliente, estava montando o “texto” que será impresso como o cupom e me veio algunas dúvidas quanto à formatação, daí gostaria de saber se existe alguma regra, se depende da impressora e tal. eu peguei o atual cupom que o cliente imprime e com base nele estou montando o formato do meu, mas quando for imprimir n sei se vai ficar no formato correto.
a impressora é Elgin Wind TP3000 series
voce esta implementando um ECF ?
essa impressora é fiscal entao deve existir alguma DLL para ela, voce nao pode mandar imprimir qualquer coisa pois se nao esse cupom nao sera registrado na memoria interna da impressora, e quanto ao formato ela formata sozinha voce só tem de passar os dados para as funcoes da dll.
furacao,
a impressora é Elgin Wind TP3000 series(havia escrito errado, sorry) e me parece que ela é NÃO FISCAL…
vou confirmar com o cliente se a impressora guarda as impressões em memória, mas acreditando que seja NÃO FISCAL eu poderia simplesmente mandar imprimir o meu texto com minha formatação para o cupom?
se ela for nao fiscal deve funcionar como generic text only entao é soh vc mandar uma InputStream que ela devera imprimir, eu nunca trabalhei com elgin mas nas comandeiras que eu ja fiz com daruma, sweda, etc funcionavam assim, faz um teste se nao funcionar da uma procurada no site da elgin a procura de manuais
Segue um exemplo
[code]public class Impressao {
//SERA USADA POR INUMERAS THREADS.
private static PrintService impressora;
protected static List<PrintService> listaImpressoras = new ArrayList<PrintService>();
public Impressao(String Impressora, String Obs) throws PrintException {
detectaImpressoras(Impressora);
imprime(Obs);
}
// VERIFICA SE EXISTE IMPRESSORA CONECTADA E DEFINE COMO PADRAO.
public void detectaImpressoras(String Impressora) {
listaImpressoras = new ArrayList<PrintService>();
DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintService[] ps = PrintServiceLookup.lookupPrintServices(df, null);
for (PrintService p : ps) {
listaImpressoras.add(p);
System.out.println("Impressora encontrada: " + p.getName());
if (p.getName().contains(Impressora)) {
System.out.println("Impressora Selecionada: " + p.getName());
impressora = p;
break;
}
}
}
public synchronized boolean imprime(String texto) throws PrintException {
// VERIFICA SE NAO EXISTE IMPRESSORA
if (impressora == null) {
String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
//System.out.println(msg);
JOptionPane.showMessageDialog(null, msg);
} else {
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(texto.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
dpj.print(doc, null);
return true;
}
return false;
}
public static void main(String args[]) throws PrintException {
String obs = "teste aqui 123 com assento é ^~ É VSKD vô \n outra linha sdjafhisdfnsdfnsdiodio" +
"fsjdfuiodjfiosdjfdosidsioijosdfiodsjfiodsjifosdjfsodifjsdiojifosdjiofsdjiof" +
"uhsfdiisudhusfuhisdhfudifhudishufihduduihfudiuhfidhfhduihfudishufisduifhsdu\n\n\n\n\n\n\n " +
"\n\n\n\n\n\n\r";
String imp = "Elgin";
new Impressao(imp, obs);
}
}[/code]
Elgin é o nome da impressora que eu add na minha maquina tem de ser o nome da impressora adicionada
blz, graças ao deus dos gambas minha impressora é NÃO FISCAL, vou arrumar a String e chamar a Elgin Wind… foda que não tenho como testar aqui, vou ter de fazer o teste no cliente. vamo ve no que dá, se der tudo ok eu retorno aqui, fechando o tópico. vlw!
Descobri que existe um padrão para esse impressão de cupom, quando ele é Fiscal, tudo deve ficar armazenado na memória da impressora, daí a necessidade de se trabalhar com dll da impressora. mas quando a impressora é Não fiscal o processo é bem mais simples. Para quem tiver dúvidas de como proceder num caso de impressora fiscal, basta ir no site do fabricante e buscar pela dll, em alguns casos é disponibilizado até um .jar
mas o negócio é complexo, então boa sorte!
1 curtida