Página 1 de 1

Falha na Impressão utilizando o NODOSIMP

Enviado: 08 Abr 2008 09:52
por locio
Estou utilizando o NODOSIMP mas estou com alguns problemas:
- Não imprime a ultima linha da pagina nem a ultima linha do arquivo;
- Sempre pula uma pagina no final da impressão. Ex: se o relatorio tem 3 folhas ele imprime a folha 4 em branco.

Será que eu estou fazendo algo errado ou se já tem uma nova versão com as correções.

Atenciosamente,

José Malta Lócio

Enviado: 08 Abr 2008 10:50
por gvc
O NODOSIMP procura o CR+LF para entender que é o final da linha e enviar para a impressora. Por isso ele não esta imprimindo sua última linha da página.
Coloque uma linha em branco no final de cada página.

Soltar uma página em branco no final do relatório é um efeito colateral.
Se vc envia um FF/CHR(12) no final do arquivo, será pulada uma página. O NODOSIMP deve pular uma página no final do arquivo impresso tb.
Não fiz o teste ainda.

Espero ter ajudado. Boa sorte.

Enviado: 08 Abr 2008 13:11
por filizola
para imprimir a ultima

@ prow()+1,01 say " "

para nao pular pagina retire o eject do final do programa.

Enviado: 15 Abr 2008 14:41
por locio
Senhores,

Obrigado pela ajuda e desculpem a demora em responder. Estive offline por uns dias.

Cordialmente,

José Malta Lócio

Re: Falha na Impressão utilizando o NODOSIMP

Enviado: 31 Out 2010 18:54
por Josmar dos Santos
Persistir em fazer essa pergunta novamente, porque no tópico anterior não tive resposta. Esse tópico já está muito grande !. Fiz uma pesquisa, e achei esse que envolve a pergunta que eu queria fazer: É característica do "NODOSIMP" saltar uma folha em branco, ou há solução para isso ??

Josmar

Re: Falha na Impressão utilizando o NODOSIMP

Enviado: 01 Nov 2010 11:44
por billy1943
Como eu uso muito o NODOSIMP, apresento a minha forma de saltar página e evitar o relatado acima.
Logicamente a minha rotina de impressão abrange outras formas de apresentação de relatórios, tais como usar RTF para o WORD, gravar em SPOOL, apresentação na tela. Mas vai abaixo a forma para LPT1 ou USB via NODOSIMP.

Definir antes como será feita a impressão:
1 - Impressão na LPT1 direta
2 - Impressão pelo NODOSIMP na impressora USB
colocar esse valor na variável modo
***************************************************
Definir também quantos caracteres por linha terá o relatório, se for usar o NODOSIMP
80 -> colocar 60
Ppara os outros valores ir aumentando o valor para 65, ....
Teste de acordo com a sua impressora para ocupar o máximo possível do formulário e economizar papel
Colocar esse valor na variável total_linhas
*********************************************************************
Caso for usar o NODOSIMP definir também o arquivo a ser usado pelo SET PRINTER TO
De-lhe o nome de REL, por exemplo.
*************************************************************************

Código: Selecionar todos

setprc(0,0)  // zera linha e coluna
use arqx    // arquivo a ser listado
go top

do while ! eof()

    if prow() < 5
       cabecalho()    // imprimir cabeçalho do relatório
    endif

    @ prow()+1,  1 say  ....
    @ prow(),    10 say ....
   
    dbskip()           // avança no arquivo

    if prow() >  total_linhas         // definir esta variável pela quantidade de linhas que o NODOSIMP poderá
                                                // imprimir em função da quantidade de caracteres = padrão 60 para 10 CPI
       [b] avanc_pag(modo)[/b]
  
    endif

enddo

.....
[b]fim_rela[/b](modo,l[b]imite)[/b]   // limite = usar os valores aceitos pelo NODOSIMP que são 80, 96, 120, 140 e 160 de                           
                                              // acordo com cada relatório a ser impresso

********************************
* Rotinas auxiliares
*******************************

PROCEDURE [b]avanc_pag(modo)[/b]
if  modo == 1   // [b]LPT1[/b]
    eject [b]
else                 //[/b] USB
     @ prow()+1,0 say space(1)  // descarrega a última linha ainda sem avanço
     eject                                 // faz o salto de formulário e para na próxima folha que poderá ser ou não 
                                             // impressa, dependendo do do while considerar EOF() ou não
endif

return .t.

PROCEDURE [b]fim_rela[/b](modo,tamanho)
local telin := savescreen()
if modo == 1 // LPT1 direto
   avanc_pag() //
   @ 0,0 say space(1)
else
   @ prow(),pcol() say chr(13) //
endif

set printer on

set console on
set printer to
set device to screen
set cursor on
set printer off

if modo == 1   // tratamento apenas para o NODOSIMP
   if tamanho == 80
      run nodosimp &rel. 80 /pre/sel/ver
   elseif tamanho == 96
      run nodosimp &rel. 96 /pre/sel/ver
   elseif tamanho == 120
      run nodosimp &rel. 120 /pre/sel/ver/apa/mar9
   elseif tamanho == 140
      run nodosimp &rel. 120 /pre/sel/ver/apa/mar5
   elseif tamanho == 160
      run nodosimp &rel. 160 /pre/sel/ver/apa/mar15
   endif
   msg_tecla("Tecle algo para continuar no sistema.")
   run del &rel.
endif
restscreen(,,,,telin)