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. )