Se o TXT está correto, com certeza é na Imprime() mesmo. Anexe um exemplo de TXT atual com mais de uma página. Vou tentar entender isso.Taciane escreveu:Outra coisa que pensei, se o TXT esta gerando 100%, tanto na primeira quando das demais páginas, talvez pudesse ser algo na função imprime. mas consigo identificar onde.
Primeira impressão LaserJet em modo console
Moderador: Moderadores
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Olá Taciane,
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Primeira impressão LaserJet em modo console
Olá, Jairo
Obrigada mais uma vez pela disponibilidade em ajudar, e pela paciência.
Obrigada mais uma vez pela disponibilidade em ajudar, e pela paciência.
- Anexos
-
MOVIMENTO_DIARIO.TXT- (7.12 KiB) Baixado 200 vezes
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Olá Taciane,
Coloque essa linha:Acima dessa linha:Ou seja, antes da saida para o video e fechamento do arquivo TESTE.TXT.
A última linha não está sendo lida porque ela não está terminando com quebra de linha, ou seja, não tem o Chr(13)+Chr(10). Acrescentado a linha acima ela passa a ser lida normalmente.
Faça um teste e vamos ver o que mais falta ajustar.
Coloque essa linha:
Código: Selecionar todos
@ pRow() + 1, 0 SAY ""Código: Selecionar todos
SET DEVICE TO SCREENA última linha não está sendo lida porque ela não está terminando com quebra de linha, ou seja, não tem o Chr(13)+Chr(10). Acrescentado a linha acima ela passa a ser lida normalmente.
Faça um teste e vamos ver o que mais falta ajustar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Primeira impressão LaserJet em modo console
Olá,
Agora sim esta gerando corretamente.
Vou fazer mais alguns testes.
Muita obrigada Jairo
)
Agora sim esta gerando corretamente.
Vou fazer mais alguns testes.
Muita obrigada Jairo
Primeira impressão LaserJet em modo console
Olá,
Testes feitos, tudo certo com a impressão.
Antes quando o executável era compilado com o Blinker eu usava este recurso aqui e atendia muito bem.
Agora depois que compilei com o HBMK2 não funciona mais, mesmo não tendo usado nenhuma lib gráfica. :-O
Fica uma tela grande preta com fonte Lucida Console -> 28 e a tela do meu programa bem pequena no meio.
https://pctoledo.org/forum/viewto ... =1&t=12015
Testes feitos, tudo certo com a impressão.
Antes quando o executável era compilado com o Blinker eu usava este recurso aqui e atendia muito bem.
Agora depois que compilei com o HBMK2 não funciona mais, mesmo não tendo usado nenhuma lib gráfica. :-O
Fica uma tela grande preta com fonte Lucida Console -> 28 e a tela do meu programa bem pequena no meio.
https://pctoledo.org/forum/viewto ... =1&t=12015
Tela cheia no Windows 7 igual a que temos no XP impossível.
As opções mais fáceis são:
1. Entrar em propriedades do próprio executável (.exe) e mudar:
fonte = Lucida Console
tamanho = 28
2. Fazer um arquivo .BAT para chamar o programa e no cone dele colocar as mesmas propriedades acima
A janela ocupar praticamente a tela toda, além de que fica visível a barra de tarefas.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Olá Taciane,
Veja este tópico: Tela Cheia Usando GTWVT com Windows ou Linux
Quanto a tela preta de fundo, como você inicia seu aplicativo? Usando arquivo .bat ou o ícone aponta diretamente para o executável?
Veja este tópico: Tela Cheia Usando GTWVT com Windows ou Linux
Quanto a tela preta de fundo, como você inicia seu aplicativo? Usando arquivo .bat ou o ícone aponta diretamente para o executável?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Primeira impressão LaserJet em modo console
Olá, Jairo
A tela preta de fundo aparece quando tento executar usando o BAT
A tela preta de fundo aparece quando tento executar usando o BAT
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Taciane, a tela preta é do bat. Isso ocorre porque a janela CMD fica aberta até que ele seja fechado, e é fechado após ser fechado o aplicativo que ele abriu. Aconselho você apontar o ícone diretamente para o arquivo executável.
Porém, se for necessário usar o bat, então configure para que ele abra o aplicativo e não espere e feche, ou seja, não fica esperando o aplicativo concluir. Exemplo:
Porém, se for necessário usar o bat, então configure para que ele abra o aplicativo e não espere e feche, ou seja, não fica esperando o aplicativo concluir. Exemplo:
Código: Selecionar todos
Start /b SeuAplicativo.ExeAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Primeira impressão LaserJet em modo console
Olá, Jairo
Desta forma que você me orientou a tela preta realmente não fica aparecendo. Mas a tela do programa fica pequena mesmo aplicando a conte Lucida Console 28.
Estou vasculhando o Fórum para ver se há outra solução, hoje a noite vou fazer alguns testes iniciais com a GTWVT.
Seguido a sua dica da função imprime consegui acertar outros 5 relatórios, depois de realinhar as colunas ficaram 100%, estou agarrada apenas com o Extrato Provisório nele TXT a cada 63 linha salta-se uma linha e inicia-se uma nova pagina.Fiz vários lançamentos simbólicos e no TXT aparece certo, estou testando com 4 paginas, no PDF logo após a linha 63 vem a informação seguinte se dar o espaço que aparece no TXT.
Jairo sem querer abusar da sua boa vontade ou de qualquer outro colega do fórum, se puder dar uma verificada onde esta o meu erro.
Desta forma que você me orientou a tela preta realmente não fica aparecendo. Mas a tela do programa fica pequena mesmo aplicando a conte Lucida Console 28.
Estou vasculhando o Fórum para ver se há outra solução, hoje a noite vou fazer alguns testes iniciais com a GTWVT.
Seguido a sua dica da função imprime consegui acertar outros 5 relatórios, depois de realinhar as colunas ficaram 100%, estou agarrada apenas com o Extrato Provisório nele TXT a cada 63 linha salta-se uma linha e inicia-se uma nova pagina.Fiz vários lançamentos simbólicos e no TXT aparece certo, estou testando com 4 paginas, no PDF logo após a linha 63 vem a informação seguinte se dar o espaço que aparece no TXT.
Jairo sem querer abusar da sua boa vontade ou de qualquer outro colega do fórum, se puder dar uma verificada onde esta o meu erro.
- Anexos
-
EXTRATO_PROVISORIO.TXT- (12.51 KiB) Baixado 190 vezes
-
Extrato Provisorio - Impressao Pelo Sistema.pdf- (23.17 KiB) Baixado 139 vezes
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Primeira impressão LaserJet em modo console
Taciane, tente fazer a seguinte alteração na função imprime():
PROCURE:
ALTERE por:
Abraços,
PROCURE:
Código: Selecionar todos
nHandler := FOpen( cArq )
While HB_FReadLine( nHandler, @cLinha ) = 0
If "CONTA CORRENTE" $ Upper( cLinha )
If lPrimeira // nao abre nova pagina na primeira sequencia
lPrimeira := .f.
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
ElseIf oPrinter:pRow() > 63 // formato A4 tem 69 linhas. Menos 2 do cabeçalho e 2 do rodapé = 65
oPrinter:NewPage() // inicia nova pagina
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
Else // cabe na mesma pagina...
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
EndIf
EndIf
oPrinter:TextOut( HB_OemToAnsi( cLinha ), .t. )
EndDoCódigo: Selecionar todos
nHandler := FOpen( cArq )
oPrinter:newline()
While HB_FReadLine( nHandler, @cLinha ) = 0
t_:=AT(CHR(12)+CHR(13),cLinha)
If t_>0
cLinha:=LEFT(cLinha,t_-1)
EndIf
oPrinter:TextOut( HB_OemToAnsi( cLinha ), .t. )
If t_>0
oPrinter:NewPage() // inicia nova pagina
oPrinter:newline()
oPrinter:newline()
EndIf
EndDoToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Primeira impressão LaserJet em modo console
Olá, Toledo e demais colegas
Fiz a alteração mas ficou do mesmo modo, durante os testes fui aumentando este -1 para outros valores somente para ver o efeito no relatório mas sempre fica do mesmo modo.
Veja abaixo como ficou depois a alteração.
Fiz a alteração mas ficou do mesmo modo, durante os testes fui aumentando este -1 para outros valores somente para ver o efeito no relatório mas sempre fica do mesmo modo.
Veja abaixo como ficou depois a alteração.
Código: Selecionar todos
nHandler := FOpen( cArq )
oPrinter:newline()
While HB_FReadLine( nHandler, @cLinha ) = 0
t_:=AT(CHR(12)+CHR(13),cLinha)
If t_>0
cLinha:=LEFT(cLinha,t_-1)
EndIf
oPrinter:TextOut( HB_OemToAnsi( cLinha ), .t. )
If t_>0
oPrinter:NewPage() // inicia nova pagina
oPrinter:newline()
oPrinter:newline()
EndIf
EndDo
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
RETURN NIL- Anexos
-
Extrato Provisorio.pdf- (18.17 KiB) Baixado 148 vezes
-
EXTRATO_PROVISORIO.TXT- (4.16 KiB) Baixado 245 vezes
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Olá Pessoal,
Taciane, vejo que você usa um critério que é colocar 3 asteriscos para destacar o nome da empresa no extrato, por exemplo:Então vou usar isso para estabelecer a quebra de página, considerando que isso seja um critério que será usado nos extratos. Então, na função imprime que passei procure esta linha:
E altere dessa forma:
Faça o teste e veja se vai funcionar.
Taciane, vejo que você usa um critério que é colocar 3 asteriscos para destacar o nome da empresa no extrato, por exemplo:
Código: Selecionar todos
*** COMERCIAL BEIRA RIO ***Código: Selecionar todos
If "CONTA CORRENTE" $ Upper( cLinha )Código: Selecionar todos
If "CONTA CORRENTE" $ Upper( cLinha ) .Or. "***" $ cLinhaAbraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Primeira impressão LaserJet em modo console
Olá, Jairo
Não deu certo não.
Espero que não se importe, vou postar o fonte talvez seja algo na geração do TXT.
Vendo a alteração do Toledo, fui pesquisar e achei o tópico abaixo do asimoes
viewtopic.php?f=4&t=13604
Tentei usar a função mencionada por ele mas permaneceu a mesma coisa no PDF
Não deu certo não.
Espero que não se importe, vou postar o fonte talvez seja algo na geração do TXT.
Vendo a alteração do Toledo, fui pesquisar e achei o tópico abaixo do asimoes
viewtopic.php?f=4&t=13604
Tentei usar a função mencionada por ele mas permaneceu a mesma coisa no PDF
Código: Selecionar todos
*EMITIR EXTRATO PROVISORIO
#define WIN_DMPAPER_A4 9
CLEAR
mlinha = 66
mconta = SPACE(5)
msal_ini = 0.00
mdat_ini = CTOD(' / / ')
mdata = CTOD(' / / ')
mdat_sal = CTOD(' / / ')
mpag = 1
USE CLIENTES INDEX ICLIENTE
SELECT 2
USE MOVIM INDEX IMOVIM
SELECT 3
USE HISTOR INDEX IHISTOR
DO WHILE .T.
mconta = SPACE(5)
CLEAR
@3,10 SAY 'C O N T A C O R R E N T E'
@4,10 SAY 'EXTRATO PROVISORIO'
@08,08 TO 15,47 DOUBLE
@10,10 SAY 'INFORME CONTA'
@18,10 SAY '99999 PARA ENCERRAR'
@10,34 GET mconta
READ
IF mconta = '99999'
CLOSE ALL
CLEAR
RETURN
ENDIF
SELECT 1
SEEK mconta
IF EOF()
@22,1 SAY 'CONTA NAO CADASTRADA'
WAIT ', ENTER'
LOOP
ELSE
EXIT
ENDIF
ENDDO
SELECT 2
SEEK mconta
IF EOF()
@22,1 SAY 'CONTA SEM MOVIMENTO'
WAIT ', ENTER PARA CONTINUAR'
ELSE
@12,10 SAY 'INFORME DATA DE INICIO'
@12,34 GET mdata
READ
ENDIF
SET PRINTER TO EXTRATO_PROVISORIO.TXT
SET DEVICE TO PRINT
cARQ := DiskName()+":\"+CurDir()+"\EXTRATO_PROVISORIO.TXT"
SELECT 1
CLEAR
CAB()
msal_ini = SAL_INI
mdat_sal = DAT_INI
SELECT 2
DO WHILE mconta = CONTA .AND. DATA < mdata .AND. .NOT. EOF()
IF CT < 10
msal_ini = msal_ini - VALOR
ELSE
msal_ini = msal_ini + VALOR
ENDIF
mdat_sal = DATA
SKIP
ENDDO
SET CENTURY ON
@6,1 SAY mdat_sal
@6,13 SAY 'SALDO ANT.'
IF msal_ini < 0.00
@6,39 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
@6,39 SAY msal_ini PICTURE '9,999,999,999.99C'
ENDIF
SELECT 2
DO WHILE mconta = CONTA .AND. .NOT. EOF()
@mlinha,1 SAY DATA
mdat_sal = DATA
mct = CT
SELECT 3
SEEK mct
IF EOF()
@22,1 SAY 'CODIGO DE TRANSACAO INEXISTENTE,'
@22,32 SAY mct PICTURE '99'
WAIT ', ENTER PARA ENCERRAR'
CLOSE ALL
RETURN
ENDIF
@mlinha,13 SAY HISTORICO
SELECT 2
@mlinha,25 SAY DOC
@mlinha,39 SAY VALOR PICTURE '9,999,999,999.99'
IF CT < 10
msal_ini = msal_ini - VALOR
@mlinha,55 SAY 'D'
ELSE
@mlinha,55 SAY 'C'
msal_ini = msal_ini + VALOR
ENDIF
mlinha = mlinha + 1
IF mlinha > 63
SELECT 1
CAB()
SELECT 2
ENDIF
SKIP
ENDDO
@mlinha,1 SAY mdat_sal
@mlinha,13 SAY 'SALDO ATUAL'
IF msal_ini < 0.00
@mlinha,39 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
@mlinha,39 SAY msal_ini PICTURE '9,999,999,999.99C'
ENDIF
SET CENTURY OFF
@ pRow() + 1, 0 SAY ""
SET DEVICE TO SCREEN
SET PRINTER TO
CLOSE ALL
Imprime( "EXTRATO_PROVISORIO.TXT" ) // envia para impressão -
RETURN
FUNCTION CAB()
@1,01 SAY '*** TESTE - MEU CABECALHO *** - EXTRATO PROVISORIO'
@1,65 SAY 'PAGINA'
@1,72 SAY mpag PICTURE '99'
mpag = mpag + 1
@2,09 SAY 'CONTA :'
@2,17 SAY CONTA
@2,23 SAY '-'
@2,25 SAY NOME
@4,03 SAY 'DATA'
@4,13 SAY 'HISTORICO'
@4,25 SAY 'DOCUMENTO'
@4,39 SAY 'V A L O R'
@5,1 SAY REPLICATE('-',78)
mlinha = 7
RETURN
******************************************
Function Imprime_EXTRATO_PROVISORIO ( cArq )
******************************************
local nHandler, cLinha
local oPrinter, lPrimeira:=.t.
If Empty( cArq ) .Or. !File( cArq )
Hb_Alert( "Arquivo de impressao nao encontrado!" )
Return Nil
EndIf
cPrinter := WIN_PRINTERGETDEFAULT()
If Empty( cPrinter )
Hb_Alert( "Nenhuma impressora Instalada!" )
Return Nil
EndIf
oPrinter := win_prn():New(cPrinter)
oPrinter:Landscape := .F.
oPrinter:FormType := WIN_DMPAPER_A4 // Formato A4
oprinter:SetPrintQuality(-1) // qualidade da impressao
oPrinter:Copies := 1
oPrinter:Create()
IF !oPrinter:Create()
Hb_Alert( "ATENÇÃO!!! Não foi possível Iniciar a Impressão, Favor Verificar se a Impressora esta Ligada." )
return
ELSE
IF !oPrinter:StartDoc("Extrato Provisorio - Impressao Pelo Sistema")
Hb_Alert( "ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar o Spoll da Impressora" )
Return
endif
oPrinter:SetFont("Courier New",10,{ 1, 16 }) // Comprime em 16 caracteres por polegada
nHandler := FOpen( cArq )
While HB_FReadLine( nHandler, @cLinha ) = 0
If "CONTA CORRENTE" $ Upper( cLinha ) .Or. "***" $ cLinha
If lPrimeira // nao abre nova pagina na primeira sequencia
lPrimeira := .f.
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
ElseIf oPrinter:pRow() > 63 // formato A4 tem 69 linhas. Menos 2 do cabeçalho e 2 do rodapé = 65
oPrinter:NewPage() // inicia nova pagina
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
Else // cabe na mesma pagina...
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
EndIf
EndIf
oPrinter:TextOut( HB_OemToAnsi( cLinha ), .t. )
EndDo
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
RETURN NIL- Anexos
-
EXTRATO_PROVISORIO.TXT- (4.21 KiB) Baixado 166 vezes
-
Extrato Provisorio.pdf- (18.18 KiB) Baixado 200 vezes
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Primeira impressão LaserJet em modo console
Olá Taciane,
Você alterou o nome da função para imprimir o extrato. Veja:Mas não alterou a chamada. Veja:
Então basta trocar a linha acima por essa:
Nota: Se tentar compilar o exemplo acusa função Imprime() não encontrada, mas como provavelmente você está testando com o aplicativo então quem está imprimindo é a função Imprime() e não Imprime_EXTRATO_PROVISORIO().
Nota1: Testei a função Imprime_EXTRATO_PROVISORIO() com seu .TXT e funcionou corretamente. Tente corrigir e faça o teste novamente.
Você alterou o nome da função para imprimir o extrato. Veja:
Código: Selecionar todos
Function Imprime_EXTRATO_PROVISORIO ( cArq )Código: Selecionar todos
Imprime( "EXTRATO_PROVISORIO.TXT" ) // envia para impressãoCódigo: Selecionar todos
Function Imprime_EXTRATO_PROVISORIO( "EXTRATO_PROVISORIO.TXT" )Nota1: Testei a função Imprime_EXTRATO_PROVISORIO() com seu .TXT e funcionou corretamente. Tente corrigir e faça o teste novamente.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Primeira impressão LaserJet em modo console
Taciane, montei um exemplo com as alterações da minha mensagem anterior.
Em anexo segue o código fonte (PRG) e também o executável, mas renomear o arquivo TESTE_IMP.EX_ para TESTE_IMP.EXE.
Abraços,
Em anexo segue o código fonte (PRG) e também o executável, mas renomear o arquivo TESTE_IMP.EX_ para TESTE_IMP.EXE.
Abraços,
- Anexos
-
teste_imp.zip- ATENÇÃO: renomear o arquivo teste_imp.ex_ para teste_imp.exe
- (797.69 KiB) Baixado 209 vezes
-
teste_imp.prg- (1.75 KiB) Baixado 196 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
