Moderador: Moderadores
FUNCTION Txt2Rtf( cArquivoIn, cArquivoOu, nColunas, cAlinha )
LOCAL cArqRtf, arq, arq_txt, cHandle
LOCAL cCaractere := space( 01 ), cLinha := space( 01 )
LOCAL lf := chr( 13 ) + chr( 10 )
hb_DeFault(@cAlinha,'L')
hb_DeFault(@cArquivoOu,cArquivoIn)
// 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( cArquivoOu, len( cArquivoOu ) - 4 ) + ".rtf" )
//cArqRtf := substr(time(),1,2)+substr(time(),4,2)+substr(time(),7,2)+".rtf"
// acrescentar antes do texto os parâmetros rtf
nHandle := fCreate( cArqRtf ) //fcreate( cArqRtf, 1 ) somente leitura
cHandle := "{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fcharset0 Arial;}}" + hb_eol()
cHandle += "\margl284\margr505\margt505\margb505" + hb_eol()
//{\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Courier New;}}
//{\*\generator Riched20 10.0.10240}\viewkind4\uc1
// \viewkind4\uc1\pard\qj\f0\ justificado
// \viewkind4\uc1\pard\qc\f0\ centralizado
// \viewkind4\uc1\pard\f0\ esquerda
// \viewkind4\uc1\pard\qr\f0\ direita
IF cAlinha = "L"
cHandle+="{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\f0\"
ELSEIF cAlinha = "R"
cHandle+="{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\qr\f0\"
ELSEIF cAlinha = "C"
cHandle+="{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\qc\f0\"
ELSE
cHandle+="{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\qj\f0\"
ENDIF
IF nColunas == 136
cHandle += "fs14 "
ELSE
cHandle += "fs23 "
ENDIF
fWrite( nHandle, cHandle )
// Pega Linha por Linha do TXT e Transforma para RTF
arq_txt := fOpen( cArquivoIn, 0 )
WHILE .T.
cCaractere := space( 01 )
IF fRead( arq_txt, @cCaractere, 1 ) <> 1
EXIT
ENDIF
IF ( cCaractere ) = chr( 13 )
cLinha += "\par" + hb_eol()
fWrite( nHandle, cLinha )
cLinha := space( 01 )
fSeek( arq_txt, 1, 1 )
LOOP
ENDIF
IF cLinha = space( 01 )
cLinha := cCaractere
ELSE
cLinha += cCaractere
ENDIF
ENDDO
cHandle := "}"
fWrite( nHandle, cHandle )
fClose( nHandle )
fClose( arq_txt )
RETURN Nil
Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes