Clipper On Line • Ver Tópico - conversão arquivo texto para rtf... e visualizar no fivewin

conversão arquivo texto para rtf... e visualizar no fivewin

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor FARLEY RIBEIRO » 03 Set 2008 10:12

Olá pessoal,

Obtive sucesso em converter meus relatorios para rtf com esse fonte abaixo.

set printer to listas.txt
Txt2rtf( "listas.txt", 80 )

Só que gostaria melhorar isso, a fonte é única para todo o texto e o tamanho varia somente entre 80 colunas e 132 colunas...

Utilizar cores em qualquer parte do texto...
Utilizar qualquer fonte, tamanho, estilo...
Inserir imagens...

E visualizar no fivewin... pois demora processar/visualizar uma tabela de preços com 1000 paginas no WORD ou WORDVIEW.

Conto com a ajuda de vcs...

Acredito que servira para outros colegas tb.

Grato

Farley

function Txt2rtf( cArquivo, nColunas )
local cArqRtf, arq, arq_txt, cHandle
local cCaractere := space( 01 )
local cLinha := space( 01 )
local lf := chr( 13 ) + chr( 10 )
// fs define o tamanho da fonte, para o Courier New é a metade
// fs14 - fonte 7,0 - 136 colunas
// fs23 - fonte 11,5 - 80 colunas
// margl - margem esquerda
// margr - margem direita
// margt - margem superior
// margb - margem inferior
// criar um arquivo rtf com o mesmo nome
cArqRtf := lower( left( cArquivo, len( cArquivo ) - 4 ) + ".rtf" )
cArqRtf := substr(time(),1,2)+substr(time(),4,2)+substr(time(),7,2)+".rtf"
// End
// acrescentar antes do texto os parâmetros rtf
arq := fcreate( cArqRtf, 1 )
cHandle := "{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fcharset0 Arial;}}" + lf
cHandle += "\margl284\margr505\margt505\margb505" + lf
if nColunas == 136
cHandle += "{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\f0\fs14 "
else
cHandle += "{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\f0\fs23 "
endif
// End
fwrite( arq, cHandle )
// Pega Linha por Linha do TXT e Transforma para RTF
arq_txt := fopen( cArquivo, 0 )
while .t.
cCaractere := space( 01 )
if fread( arq_txt, @cCaractere, 1 ) <> 1
exit
endif
if ( cCaractere ) = chr( 13 )
cLinha += "\par" + lf
fwrite( arq, cLinha )
cLinha := space( 01 )
fseek( arq_txt, 1, 1 )
loop
endif
if cLinha = space( 01 )
cLinha := cCaractere
else
cLinha += cCaractere
endif
enddo
// End
cHandle := "}"
fwrite( arq, cHandle )
fclose( arq )
fclose( arq_txt )
return( .T. )

Borland BCC(5.51)/PellesC(5.01)/Fivewin(2.6)/xHarbour.org(0.99.50)/Med(3.02)/DBFNTX/DBFCDX /WvWToools(0.83)
Avatar de usuário

FARLEY RIBEIRO
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 24 Jul 2007 10:26
Cidade/Estado: MONTES CLAROS-MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor sygecom » 03 Set 2008 22:29

Olá Farley,
Esse exemplo que vc postou é da pasta tests do xharbour da CVS, e como lá já diz, ele é para uso simples, de uma procurada aqui pelo forum que já vi o pessoal vendo alguns recurso a mais para RTF. Se não me engano o colega Rochinha que tem algumas perolas para RTF.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 6671
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 77 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor FARLEY RIBEIRO » 05 Set 2008 11:21

Olá colegas...

Obrigado ao Leonardo pela sugestão. Obrigado ao Kleyber por indicar a classe Tword.

Já consegui algumas coisas.. Inserir imagens.. quebra de páginas.

Agora eu quero é converter um arquivo texto (set printer to relat.txt) para padrão word (doc, rtf), mas com alguns definições que irei passar neste arquivo texto, tais como: cor, fonte, tamanho, etc.

Ex: LISTAGEM DE CLIENTES
Gostaria com Fonte Arial, 20, Cor Azul, Negrito, Italico, Sublinhado.

Tentei dessa forma e não consegui.
DEFINE FONT oFont1 NAME 'Arial' SIZE 0, -12 OF oWord
oWord:Say( 2, 45, 'Classe TWORD método Say. Mostra o texto numa caixa.', oFont1)

Alguém poderia me ajudar ou sugerir alguma dica.

Grato

Farley
Avatar de usuário

FARLEY RIBEIRO
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 24 Jul 2007 10:26
Cidade/Estado: MONTES CLAROS-MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor FARLEY RIBEIRO » 29 Set 2008 15:35

O arquivo .rtf já gerei.. só falta visualizar..

Gostaria sem depender de programas externos com recursos próprios do fivewin..

Grato

Farley
Borland BCC(5.51)/PellesC(5.01)/Fivewin(2.6)/xHarbour.org(0.99.50)/Med(3.02)/DBFNTX/DBFCDX /WvWToools(0.83)
Avatar de usuário

FARLEY RIBEIRO
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 87
Data de registro: 24 Jul 2007 10:26
Cidade/Estado: MONTES CLAROS-MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor rochinha » 14 Out 2008 15:18

Amiguinho

Se sua versão for 32bits talvez voce tenha exito se fizer uso de Riched32.dll em conjunto com Fivewin. Veja o trecho de codigo que eu uso para imprimir meus .RTFs:

Onde:
cFile - Nome do arquivo .RTF
lPrint - Critica se imprime diretamente
lVisible - Mostra na tela o resultado

#include "richedit.ch"
function rtfWPrint( cFile, lPrint, lVisible )
  LOCAL oRWnd, oRich, hRichDLL := LoadLibrary( "riched20.dll" ), cVar := ""
  LOCAL ScreenWidth := GetSysMetrics(0), ScreenHeight := GetSysMetrics(1), ScreenMargim := 25
  if lVisible
     DEFINE DIALOG oRWnd FROM 0, 0 TO ScreenHeight,ScreenWidth PIXEL STYLE WS_POPUP COLOR nRGB(0,0,0),nRGB(0,0,0) //NOSYSMENU NOICONIZE
            @ 5,5 SAY "Imprimindo "+cFile+" em "+PRNGETNAME()+"..." COLOR nRGB(255,255,255),nRGB(0,0,0) OF oRWnd PIXEL
            @ ScreenMargim,(ScreenWidth-310)/8 RICHEDIT oRich VAR cVar SIZE 310,350 PIXEL OF oRWnd
            oRich:LoadFromRTFFile( cFile )
            if lPrint
               oRich:Print( cFile )
            endif
     ACTIVATE DIALOG oRWnd
  else
     DEFINE WINDOW oRWnd FROM 0,0 TO 1,1 TITLE "Imprimindo "+cFile+"..."
            oRich := TRichEdit():New(0,0,,oRWnd,,,,.T.,, .f. )
            oRich:LoadFromRTFFile( cFile )
            if lPrint
               oRich:Print( cFile )
            endif
            //oRWnd:setControl(oRich)
     ACTIVATE WINDOW oRWnd
     SysWait(5)
     oRWnd:End()
  endif
  FreeLibrary( hRichDLL )
  return nil
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4226
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 514 vezes
Mens.Curtidas: 183 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 05 Nov 2008 16:53

Pergunta ao rochicha:

tem como no fivewin, fazer um servidor de impressao onde o sistema abre um dbf que contem o nome do arquivo (lembrando que o mesmo eh .rtf) e envia para uma impressora que o dbf informou?

Edegar
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor rochinha » 06 Nov 2008 09:50

Amiguinho,

Tem sim,

Tempos atrás eu criei um servidor que funciona como ponte entre um aplicativo e o sistema de fax do Windows 2003 ou XP rodando na bandeja do Windows e sendo acionada via chave RUN do registro.

o funcionamento dele era baseado num .DBf que recebia um registro com os dados para o fax.

O programa, de tempos em tempos fazia uma leitura da base de dados, verificava se existia arquivos pendentes de envio e fazia a ponte com o sistema de fax. Funcionava inclusive com o WinFAX. Mas fax e coisa do passado em termos das tecnologias que temos hoje.

Caso queira dar uma olhada veja: http://www.5volution.com.br/app02.asp

Posteriormente a isto produzi um outro aplicativo com a mesma base que tem por intuito driblar o mapeamento de impressoras, o qual não era possivel com uma Itautec de 40 colunas, ela simplesmente não era mapeável, portanto as maquinas da rede não imprimiam nela.

O que fiz:

Este aplicativo é jogado na memória quando a maquina é ligada através de uma chamado a chave RUN do registro.
Esta maquina que o executa é a mesma que possui a impressora ligada fisicamente.
Ele fica no ar lendo de X em X segundos a pasta do meu pequeno PDV.
Este PDV é executado em várias maquinas de uma rede e todos estão configurados para salvar o impresso nesta pasta.
Este aplicativo encontra os arquivos de impressão, abre, interpreta-os e envia a saida para a impressora.
O tempo de espera é definido por meu PDV e pode variar de 1 segundo para mais.

Ja este caso o programa não é suportado por um .DBF e sim por arquivos que são encontrados, manuseados e deletados.

No seu caso voce pode usar qualquer uma destas técnicas e se voce usar Harbour poderá capturar todas as impressoras existentes na maquina e configura-las no seu servidor de impressão.

Para direcionar a impressão e impressos voce apenas precisaria enviar como parametros o nome do arquivo e a impressora alvo. Se usar um .DBf voce poderá guardar informações como data, hora e usuario que fez a solicitação e nome do arquivo e impressora que o mesmo escolheu para o feito.

a sofisticação ficaria por conta do seu aplicativo porder bloquear a impressão dependendo de alguma critica existente no mesmo, tipo, se o nivel do usuario for abaixo de X não pode continuar ou o arquivo não seria impresso.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4226
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 514 vezes
Mens.Curtidas: 183 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 06 Nov 2008 15:30

amigo rochinha...

vi que vc disponibilizou o prnrich.exe que funcionou legal, agora nao querendo (ja sendo um pouco abusado..rs)

nao teria como ele imprimir direto, digo informar o nome do arquivo e a impressora e ele imprimir sem passar pelo menu?, nao que o menu nao seja interessante, mas seria mais uma funcionalidade, que da mesma forma que resolve meu problema acredito que resolveria de outras pessoas tbm.

digo isto, pois estou (como na maioria das pessoas..rs...procurando o caminho mais..digo muito mais..facil)

Edegar

segue rotina para impressao

****************************************************************************************
function main()

clear

use ..\arquivos\temp_imp new shared

@ 00 , 00 say 'Aguardando Arquivos para Impressao'
@ 02 , 00 say 'Pressione ESC para finalizar'

sele temp_imp
go top

do while lastkey() # 27
   do while !eof() .and. lastkey()#27
      if temp_imp -> situ # "OK"
         xArq   := alltrim(temp_imp -> arquivo)
         xPorta := upper(alltrim(temp_imp -> Porta))
         if left(xPorta,3)=´LPT´
            copy file &xArq to &xPorta
           else           
            ! wordpad /p &xArq  (((((( aki posso usar o prnrich   ))))))))
*
* como vc pode ver imprimo apenas na impressora padrao, como o relatorio eh pequeno 1 pagina e sempre é impresso
* na mesma impressora, gostaria de seguir a ideia acima, apenas enviando para outra impressora, mas se tiver que
* fazer uma rotina para isso......maos a obra...
*
* ops... lembrando que o unico sistema que compilei no xharbour foi este...rs..
* no fivewin  .....nada....rs
*           
         endif
         sele temp_imp
         do while !lock()
         enddo
         repl situ with "OK"
         unlock
      endif
      skip
   enddo
   Inkey(1)   
   go top
enddo

close all
**********************************************************************


-------------------------------
Nota de Moderação (Toledo): mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: faq.php?mode=bbcode#f21
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 14 Dez 2008 09:28

Ao amigo rochinha

VC disse que tem como fazer a rotina em fivewin e no xharbour e possivel?

outra pergunta:
no post acima vc colocou um exemplo onde usa o richedit.ch onde consigo o mesmo?

Fico no aguardo

Edegar
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor rochinha » 15 Dez 2008 10:41

Amiguinho,

Pode sim,

O uso do fivewin é só para apresentação, pois o codigo usa OLE para automatizar o uso da API com Word.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4226
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 514 vezes
Mens.Curtidas: 183 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 15 Dez 2008 12:13

rochinha....

sendo assim esta ficando menos dificel,, mas onde consiguo o richedit.ch?

obs.. lembrando que no exemplo que enviei acima, estou compilando com o xharbour, outro detalhe que considero importante:
no cliente acima (até que poderia compilar com o xharbou e aprender a win32prn), mas tenho um amigo tem um sistema bem mais complexo que as alterações serão grandes.. sendo assim ele imprime seguindo a mesma ideia (gera o rtf e wordpad /p), e como estou procurando uma solução para os dois.....mas ja estou quase desistindo..
e o interessante é que eu ja afirmei anteriormente (se o wordpad aceitasse mais um paramento-nome da impressora) eu nao teria problema, sendo assim o que parece ser apenas um detalhe, se tornou um grande problema.

Edegar
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor Euclides » 16 Dez 2008 08:03

Edegar,
Eu utilizo +/- o método do Rochinha assim:
Crio um documento no Word .doc mesmo.
por exemplo em: "C:\sistema\forms\modelo1.doc"

Prezado Sr. [CAMPO1]
Segue anexo a nota no valor de [CAMPON]
...

No programa faço assim:

local oWord, cDoc:="C:\sistema\forms\modelo1.doc"
local cCampo1:="XXXXXX", cCampon:=transform(999.99, "@E 99,999.99")

oWord:=TWord():New()
oWord:OpenDoc(cText)
oWord:Replace('[CAMPO1]', cCampo1)
oWord:Replace('[CAMPON]', cCampon)
oWord:oActiveDoc:Invoke("PrintOut",.F.,.F., 0, "", "", "", 0, 1, "")
oWord:End()

Isso imprime diretamente na impressora sem intervenção do operador.
Utilizo no Fivewin com o TWord e OLE2.LIB
Até+
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 155
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 16 Dez 2008 11:32

Euclides, gostei de sua ideia, mas onde consigo e ole2.lib
tentei baixar, mas nao achei

Agradeço

Edegar
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor Euclides » 17 Dez 2008 10:14

Edeger,
procure no Google: "ole2.lib" +fivewin
Digite com aspas e tudo mais e vai achar algo já na primeira página.
Só mais uma coisa: Isso eu utilizo em um sistema FiveWin 16 bits.
É importante saber em que ambiente vai ser utilizado.
O xHarbour e o Harbour já vem com o OLE2 em uma dos seus libs.
Aparentemente, o FIVEH.LIB já vem com OLE2.
É isso aí, T+
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 155
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: conversão arquivo texto para rtf... e visualizar no fivewin

Mensagempor edegar_metodo » 17 Dez 2008 10:34

Euclides,

Obrigado
edegar_metodo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 40
Data de registro: 19 Ago 2008 18:29
Cidade/Estado: Colorado - Pr
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Próximo



Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


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