Ir para conteúdo
  • Cadastre-se

dev botao

ACBrECFVirtualBuffer efetua o Corte errado no final da impressão.


  • Este tópico foi criado há 3039 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos da comunidade,

Encontramos uma dificuldade na na unit: ACBrECFVirtualBuffer, mais especificamente na classe: TACBrECFVirtualBufferClass, procedure AddBufferRodape;

No final da impressão existe o comando: '</corte_total>', mas sem contar a quantidade de linhas necessárias precisa pular para efetuar o corte, dessa forma acaba cortando a impressão antes mesmo de finalizar a impressão corretamente, deixando textos abaixo do corte.

O Código encontrava-se da seguinte maneira:

with fsBuffer do
  begin
    Add( '</linha_simples>' ) ;
    Add( PadSpace('N.Serie '+PadRight(fpNumSerie,21)+'|Maq '+GetNumECF+'|'+
              'v'+NumVersao,Colunas,'|') );
    Add( PadSpace('Oper. '+PadRight(Operador,15)  +'|'+
              FormatDateTimeBr(now, 'dd/mm/yy hh:nn:ss')+V,  Colunas,'|') );
    Add( PadCenter('** N A O   E   C U P O M   F I S C A L **',Colunas) );
    Add( '</linha_dupla>' ) ;
    </corte_total> // Corte total já pula linhas

  end ;

Alterei o código para:

with fsBuffer do
  begin
    Add( '</linha_simples>' ) ;
    Add( PadSpace('N.Serie '+PadRight(fpNumSerie,21)+'|Maq '+GetNumECF+'|'+
              'v'+NumVersao,Colunas,'|') );
    Add( PadSpace('Oper. '+PadRight(Operador,15)  +'|'+
              FormatDateTimeBr(now, 'dd/mm/yy hh:nn:ss')+V,  Colunas,'|') );
    Add( PadCenter('** N A O   E   C U P O M   F I S C A L **',Colunas) );
    Add( '</linha_dupla>' ) ;
    For A := 1 to LinhasEntreCupons do
        Add( '' ) ;
    CortaPapel(False); // Corte total já pula linhas

  end ;

O mesmo código pode ser encontrado na unit: ACBrECFNaoFiscal, procedure: AddBufferRodape.

A unica diferença que dentro da Unit ACBrECFVirtualBuffer, tem o comando para cortar papel diretamente nela.

Gostaria de saber se o código pode ser adicionado ao repositório.

Estou anexando a unit para analise de vocês.

Desde já agradecemos a atenção.

Att, Alan Leônidas.

 

 

 

 

ACBrECFVirtualBuffer.pas

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá a todos,

Segue em anexo a unit atualizada, pois cometi um erro na parte do corte do papel.

No código acima eu defini o corte com o Comando: CortePapel(False);

with fsBuffer do
  begin
    Add( '</linha_simples>' ) ;
    Add( PadSpace('N.Serie '+PadRight(fpNumSerie,21)+'|Maq '+GetNumECF+'|'+
              'v'+NumVersao,Colunas,'|') );
    Add( PadSpace('Oper. '+PadRight(Operador,15)  +'|'+
              FormatDateTimeBr(now, 'dd/mm/yy hh:nn:ss')+V,  Colunas,'|') );
    Add( PadCenter('** N A O   E   C U P O M   F I S C A L **',Colunas) );
    Add( '</linha_dupla>' ) ;
    For A := 1 to LinhasEntreCupons do
        Add( '' ) ;
    CortaPapel(False); // Corte total já pula linhas

  end ;

Mas essa procedure efetua o corte imediatamente, e na logica o corte é para acontecer após a impressão.

Então deixei da seguinte forma:

with fsBuffer do
  begin
    Add( '</linha_simples>' ) ;
    Add( PadSpace('N.Serie '+PadRight(fpNumSerie,21)+'|Maq '+GetNumECF+'|'+
              'v'+NumVersao,Colunas,'|') );
    Add( PadSpace('Oper. '+PadRight(Operador,15)  +'|'+
              FormatDateTimeBr(now, 'dd/mm/yy hh:nn:ss')+V,  Colunas,'|') );
    Add( PadCenter('** N A O   E   C U P O M   F I S C A L **',Colunas) );
    Add( '</linha_dupla>' ) ;
    For A := 1 to LinhasEntreCupons do
        Add( '' ) ;
      Add( '</corte_total>'); // Corte total já pula linhas

  end ;

Desculpe pelo erro;

Obrigado pela atenção.

Att. Alan Leônidas.

ACBrECFVirtualBuffer.pas

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Daniel,

Desculpe, mas mesmo preenchendo essa propriedade o corte estava sendo executado de forma errada (Não estava considerando as linhas).

Estamos utilizando o componente: ACBrECFVirtualNaoFiscal, e o mesmo está ligado ao ACBrPosPrinter, mesmo preenchendo a propriedade passada corta de forma incorreta.

Funciona apenas com a modificação que coloquei no post.

Estamos utilizando o ACBrECFVirtualNaoFiscal, ligado ao Componente ACBrECF, onde imprimimos os comprovantes não fiscal SiTef, não modificamos codificação do sistema, aproveitamos o que já estava pronto, apenas ligamos o não fiscal para imprimir nas térmicas.

Obrigado mais uma vez pela atenção.

Att. Alan Leônidas

Atenciosamente,

 

 Assinatura.png

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...