Clipper On Line • Ver Tópico - Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor lugab » 13 Set 2018 19:59

Pessoal... Help me, please !!!!

Este é um arquivo TXT que eu pretendo converter pra PDF, usando o TXTtoPDF.PRG daqui do fórum
SALTO-LINHA.jpg

Como faço pra eliminar esse controle "FF" (destacado com <-RETIRAR ISSO) de mudança de página no TXT, antes de enviar essa linha para o PDF ?
Se deixar passar esse "FF" para o PDF, termina juntando a última linha impressa com a que vem após o "FF", loucura !!!
Abaixo o TXTtoPDF em uso
*******************************
Function Txt_Pdf(vARQ, vABRE )
*******************************
cText := memoread( vARQ )
nLines := mlcount( cText, 150 )
cFileToSave := cARQPDF        //  nome do PDF
Private page, height, width, def_font, font
Private pdf := HPDF_New()
if pdf == NIL
   Aviso("Erro HBPDF tentar gerar o Arquivo Pdf, Favor Tente novamente")
   Return("")
endif
Clargura=0
for i= 1 to nLines
    xLinha:= memoline( cText, 150, i, 1, .F. )
    if .not. empty(xlinha)
        xlinha=alltrim(xlinha)
        clargura=Max(clargura,len(xlinha))
    endif
next i

/* set compression mode */
If CompressaoPDF
   HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
else
  HPDF_SetCompressionMode( pdf, HPDF_COMP_NONE )
endif

page := HPDF_AddPage(pdf)
height := HPDF_Page_GetHeight(page)
width := HPDF_Page_GetWidth(page)

def_font := HPDF_GetFont( pdf, "Helvetica", NIL )
HPDF_Page_BeginText( page )
HPDF_Page_MoveTextPos( page, 10, height - 10 )
if clargura<85
   Tletra=11
elseif clargura<105
   Tletra=10
elseif clargura<125
   Tletra=9
elseif clargura<145
   Tletra=8
else
   Tletra=7
endif
vCONT=0
for nA := 1 to nLines
   cLinha := memoline( cText, 150, nA, 1, .F. )

   font := HPDF_GetFont( pdf, "Courier" , NIL )
   HPDF_Page_SetFontAndSize( page, def_font, tletra )
   HPDF_Page_SetFontAndSize( page, font, tletra )

   HPDF_Page_ShowText( page, cLinha )
   HPDF_Page_MoveTextPos( page, 0, -10 )

   vCONT=vCONT+1
   IF vCONT=80
    page := HPDF_AddPage(pdf)
    HPDF_Page_SetLineWidth(page, 1)

    HPDF_Page_BeginText( page )
    HPDF_Page_MoveTextPos( page, 10, height - 10 )
    vCONT = 0
   ENDIF
next

HPDF_Page_EndText( page )
HPDF_SaveToFile( pdf, cFileToSave )
IF upper(vABRE)="S"
   Abre_arquivo( cFileToSave ) // aqui dependendo já mando abrir o arquivo
ENDIF
HPDF_Free( pdf )
Return

Eu uso Harbour 3.2, modo console
Grato...
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor Itamar M. Lins Jr. » 13 Set 2018 22:16

Ola!
Acredito que está na outra rotina. Essa não usa "EJECT"
Está na rotina que cria o TXT.
Em todo caso:

cText := memoread( vARQ )
cText := strtran(cText,chr(12),"") //eject == chr(12)
cText := ... mais coisas que não queira por exemplo chr(14) expandido...


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor lugab » 13 Set 2018 23:41

Valeu, Itamar, vou testar

Muito obrigado
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor coiote64 » 26 Out 2018 16:44

A todos! Boa tarde!

Eu também tive o mesmo problema da dificuldade do comando "EJECT" em impressora USB/Rede.
Depois de tanto ralar que durou até 1 mês para descobrir cheguei a seguinte solução para impressão de arquivo TXT.
Eis o seguinte...

O comando correto é: __eject()

==============================================================================================

No programa principal Main.prg coloque logo no inicio:

#ifndef HB_STD_CH_
#define HB_STD_CH_
#include "set.ch"
.
.
.
depois coloque nos seus módulos de impressão :
.
.
? "teste"
? "teste"
? "teste"
? "teste"
? "teste"
? "teste"
? "teste"
? "teste"
__eject()

Pronto! é isso...muito simples!

Abraços a todos!
Hans Frank
Campinas/SP
Avatar de usuário

coiote64
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 7
Data de registro: 13 Jun 2015 16:54
Cidade/Estado: CAMPINAS
Curtiu: 4 vezes
Mens.Curtidas: 1 vez

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor JoséQuintas » 27 Out 2018 17:39

Dá uma olhada na ze_pdfclass.prg, mas em todo caso, algo mais ou menos assim

FOR EACH cTxtPagina IN hb_RegExSplit( MemoRead( "arquivo.txt" ), Chr(12) )
   // e imprime cada cTxtPagina
NEXT


hb_RegExSplit transforma o arquivo num array, usando o FF como indicação de separador, com isso, cada página fica em um elemento do array.
O FOR/EACH processa cada elemento do array colocando em cTxtPagina
O resultado é que vai trabalhar com uma página de cada vez, sem o FF
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor asimoes » 27 Out 2018 22:28

Quintas,

O teu exemplo com Hb_RegExSplit está invertido, pra remover Chr(12) é assim:

Hb_RegExSplit( Chr(12), MemoRead( "teste.txt" ) )
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor asimoes » 27 Out 2018 22:34

Testando...

   set device to printer
   Set printer to teste.txt
   set print on
   Setprc(0,0)
   @Prow(),0   say "teste"
   @Prow()+1,0 say "teste"
   __Eject()
   Setprc(0,0)
   @Prow(),0   say "teste"
   @Prow()+1,0 say "teste"
   Set print off
   set printer to
   set device to screen
   
   aTxt := Hb_RegExSplit(  Chr(12), MemoRead( "teste.txt" ) )
   
   FOR EACH cTxtPagina IN aTxt
      ? cTxtPagina // e imprime cada cTxtPagina
   NEXT
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor asimoes » 27 Out 2018 22:41

Se quiser acessar diretamente o número da página.

aPg := {}
FOR EACH cTxtPagina IN aTxt
   aAdd( aPg, {cTxtPagina})  guarda cada cTxtPagina
NEXT
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Salto de Linha ou sei lá o que no TXTtoPDF.PRG

Mensagempor JoséQuintas » 27 Out 2018 23:26

Valeu pela correção.
De vez em quando inverto esse, AScan e outros, que não fazem parte do dia a dia.
MemoEdit então.... sem chance lembrar tudo... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro