giorgiofellipe / cordova-plugin-datecs-printer

Cordova plugin to print on Mobile Bluetooth ESC/POS Printers - Tested on Datecs DPP-250 Printer
MIT License
73 stars 60 forks source link

Can't print multiple items #95

Closed leonardofmed closed 6 years ago

leonardofmed commented 6 years ago

Novo problema :/

Quando tento imprimir múltiplos itens com a função printText, acaba saindo apenas algumas partes na impressão. Inseri e removi diversos itens e sempre algum fica sem aparecer ou a impressão para em algum item e não imprime os outros, as vezes até repete algum item. Não é apresentado nenhum erro e fiz um teste com o console e ele envia ok para todos os itens.

Código com todos os itens:


  printItem(){
    this.print.listBluetoothDevices().then(result => {
      console.log(JSON.stringify(result));
      this.print = result;
    }).catch(err => {

    });

    this.print.connect('00:02:5B:B4:7C:3A').then(result => {
      console.log(JSON.stringify(result));
      this.print = result;
    }).catch(err => {

    });

    var printStr0 = "";
      printStr0 += "{reset}{center}Instituto do Meio Ambiente de Santa Catarina {br}";
      printStr0 += "Criado pela Lei 17354/2017, que extingue a Fatma {br}";
      printStr0 += "------------------------------------------------";
      printStr0 += "AUTO DE INFRACAO AMBIENTAL 9453-D {br}";
      printStr0 += "------------------------------------------------";
      printStr0 += "DADOS DO AUTUADO {br}";

    var printStr01 = "";
      printStr01 += "{br}";
      printStr01 += "{reset}{left}Nome: ";
      printStr01 += "ADD VARIAVEL NOME {br}";
      printStr01 += "CPF: ";
      printStr01 += "ADD VARIAVEL CPF {br}";
      printStr01 += "Endereco: ";
      printStr01 += "ADD VARIAVEL ENDERECO {br}";

    var printStr02 = "";
      printStr02 += "{reset}{center}{br}";
      printStr02 += "------------------------------------------------";
      printStr02 += "DADOS DA INFRACAO AMBIENTAL{br}";

    var printStr03 = "";
      printStr03 += "{br}";
      printStr03 += "{reset}{left}Data e hora da infracao:  ";
      printStr03 += "ADD VARIAVEL DATA/{br}";
      printStr03 += "{reset}{left}Local de ocorrencia:  ";
      printStr03 += "ADD VARIAVEL LOCAL {br}";
      printStr03 += "{reset}{left}Coordenadas planas UTM: ";
      printStr03 += "ADD VARIAVEL COORD {br}";
      printStr03 += "{reset}{left}Descricao: ";
      printStr03 += "ADD VARIAVEL DESCRICAO {br}";

    var printStr04 = "";
      printStr04 += "{reset}{center}{br}";
      printStr04 += "------------------------------------------------";
      printStr04 += "FUNDAMENTACAO LEGAL{br}";

    var printStr05 = "";
      printStr05 += " {br}";
      printStr05 += "{reset}{left}DECRETO FEDERAL 6.514/08 Art 066 {br}";
      printStr05 += "OU ADD VARIAVEL ARTIGO {br}";

    var printStr06 = "";
      printStr06 += "{reset}{center}{br}";
      printStr06 += "------------------------------------------------";
      printStr06 += "SANCOES APLICADAS{br}";

    var printStr07 = "";
      printStr07 += " {br}";
      printStr07 += "{reset}{left}Tipo: Multa Simples; Termo de Embargo: 3736-D{br}";
      printStr07 += " {br}";
      printStr07 += "|-      DECRETO FEDERAL 6.514/08 Art 066      -|";
      printStr07 += "Categoria: Administração Ambiental{br}";
      printStr07 += "Situação econômica do infrator: Médio Infrator{br}";
      printStr07 += "Motivação para Conduta: Intencional{br}";
      printStr07 += "Valor de referência: R$ 75.000,00{br}";
      printStr07 += "Agravantes:{br}";
      printStr07 += "- Ter o agente cometido a infração para obter vantagem pecuniária (50%);{br}";
      printStr07 += "Valor referente ao(s) agravante(s) : R$ 37.500,00{br}";
      printStr07 += "Valor referente ao Art. 066: R$ 112.500,00{br}";
      printStr07 += "Efeitos para o meio ambiente: Reversível em Médio Prazo{br}";
      printStr07 += "Efeitos para saúde a pública: Não Há{br}";
      printStr07 += "Grau de lesividade: Médio II{br}";
      printStr07 += "|-                                            -|";
      printStr07 += " {br}";
      printStr07 += "Valor total da multa: R$ 274.500,00";
      printStr07 += " {br}";

    var printStr08 = "";
      printStr08 += "{reset}{center}{br}";
      printStr08 += "------------------------------------------------";
      printStr08 += "AUTUADO/PREPOSTO{br}";

    var printStr09 = "";
      printStr09 += " {br}";
      printStr09 += "{reset}{left}Nome:     ";
      printStr09 += "ADD VARIAVEL NOME {br}"; 
      printStr09 += "{reset}{left}CPF:     ";
      printStr09 += "ADD VARIAVEL CPF {br}"; 

    var printStr10 = "";
      printStr10 += "{reset}{center}{br}";
      printStr10 += "------------------------------------------------";
      printStr10 += "AGENTE FISCAL{br}";

    var printStr11 = "";
      printStr11 += " {br}";
      printStr11 += "{reset}{left}Nome:     ";
      printStr11 += "ADD VARIAVEL NOMEAGENTE {br}"; 
      printStr11 += "{reset}{left}MATRICULA:     ";
      printStr11 += "ADD VARIAVEL MATRICULA {br}"; 

    var printStr12 = "";
      printStr12 += "{reset}{center}{br}";
      printStr12 += "------------------------------------------------";
      printStr12 += "TESTEMUNHA(S){br}";

    var printStr13 = "";
      printStr13 += " {br}";
      printStr13 += "{reset}{left}Nome:     ";
      printStr13 += "ADD VARIAVEL NOMETESTEMUNHA {br}"; 
      printStr13 += "{reset}{left}Endereco:     ";
      printStr13 += "ADD VARIAVEL ENDERECOTESTEMUNHA {br}";

    var printStr14 = "";
      printStr14 += "{reset}{center}{br}";
      printStr14 += "------------------------------------------------";
      printStr14 += "OBSERVACOES(S){br}";

    var printStr15 = "";
      printStr15 += " {br}";
      printStr15 += "{reset}{left}Enviado por via postal com o Aviso de Recebimento - AR.{br}";
      printStr15 += "...{br}"; 

    this.print.printText(printStr0, 'ISO-8859-1');
    this.print.printText(printStr01, 'ISO-8859-1');
    this.print.printText(printStr02, 'ISO-8859-1');
    this.print.printText(printStr03, 'ISO-8859-1');
    this.print.printText(printStr04, 'ISO-8859-1');
    this.print.printText(printStr05, 'ISO-8859-1');
    this.print.printText(printStr06, 'ISO-8859-1');
    this.print.printText(printStr07, 'ISO-8859-1');
    this.print.printText(printStr08, 'ISO-8859-1');
    this.print.printText(printStr09, 'ISO-8859-1');
    this.print.printText(printStr09, 'ISO-8859-1');
    this.print.printText(printStr10, 'ISO-8859-1');
    this.print.printText(printStr12, 'ISO-8859-1');
    this.print.printText(printStr13, 'ISO-8859-1');
    this.print.printText(printStr14, 'ISO-8859-1');
    this.print.printText(printStr15, 'ISO-8859-1');

    this.print.feedPaper(100).then(result => {
      console.log(JSON.stringify(result));
      this.print = result;
    }).catch(err => {

    });

    this.print.feedPaper(50).then(result => {
      console.log(JSON.stringify(result));
      this.print = result;
    }).catch(err => {

    });

  }

O que está imprimindo com esse código: 20180305_095948

Removendo ou adicionando mais itens acontece o que mencionei anteriormente. Criei outro app, com novos itens e a mesma coisa acontece. Sabe me dizer o que pode estar acontecendo?

giorgiofellipe commented 6 years ago

Você não está trabalhando da maneira correta com as Promises. O problema está na sua lógica, não no plugin.

leonardofmed commented 6 years ago

Muito obrigado pela rápida resposta novamente. Eu estou separando as variaveis assim porque foi o jeito que encontrei para aplicar as formatações necessárias. Você poderia passar um exemplo de como seria a maneira correta de fazer isso?

leonardofmed commented 6 years ago

Pode ser um exemplo bem simples, só pra eu ver onde estou errando. Dei uma estudada legal na manipulação de promises, pelo que entendi a task printText é assíncrona né? Tentei manipular essas promises de diversas maneiras, as que não geram erros apenas não funcionam :/ Mais uma vez, desculpe pela ignorância no assunto, estou caindo de paraquedas em cima do Ionic.

leonardofmed commented 6 years ago

Resolvi o problema colocando todos os textos e variáveis em uma única string. O problema volta a aparecer se o número de caracteres se aproximar de 7000