Estou utilizando a classe FWMsPrinter para gerar um relatório em PDF. Neste relatório é impresso um texto que fica gravado em um TXT, para ser editado sem precisar mexer sempre no fonte. Ocorre que quando o PDF é gerado, percebi que alguns caracteres saem truncados, mesmo sem ter acentuação.
Alguém já teve problema semelhante?
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Boa tarde Gabriela, notei que somente alguns caracteres acentuados ficam incorretos, sabe me dizer se somente os dados que tem origem do TXT ficam incorretos? Ou o relatório inteiro é baseado em um TXT? Qual o método utilizado para efetuar a impressão do texto? Você consegue colocar um exemplo para reproduzir esse problema?
Boa tarde, Daniel !
O cabeçalho do relatório é em texto fixo e não apresenta problema, só os dados que vem do TXT.
Segue o método utilizado para impressão do texto:
//Declaracao objeto oPrn
Private oPrn := FwMSPrinter():New(cArchNom,IMP_PDF,.T.,"\",.T.,,,,.T.),;
//Leitura do arquivo TXT
While !FT_FEOF()
nLinea++
c_condic := FT_FREADLN( )
cAux := ''
If Len( c_condic ) == 0
cAux := ' '
n:= 0
Else
FOR n := 1 TO Len( c_condic )
cAux := cAux + SubStr( c_condic, n, 1 )
If Len( cAux ) >= nLen
AAdd( a_condic, OemToAnsi( SubStr( cAux, 1, RAt( Space( 1 ), cAux ) - 1 ) ) )
cAux := SubStr( cAux, RAt( Space( 1 ), cAux ) + 1 )
Endif
NEXT
Endif
If n >= Len( c_condic ) .AND. !Empty( Len( cAux ) ) .AND. Len( cAux ) < nLen
AAdd( a_condic, OemToAnsi(cAux) )
Endif
FT_FSKIP()
EndDo
//Impressao dos dados
FOR N := 1 TO LEN(a_condic)
oPrn:Say( nLine, 070,( lEnd, a_condic[N]),oFont10b1, 100 )
nLine += 35
control()
NEXT
Boa tarde Gabriela,
Remova a função OemToAnsi
da leitura do seu arquivo texto, assim o texto vindo do arquivo não sofrerá qualquer alteração.
Um ponto importante, é que seu arquivo texto precisa ter sido criado com um encode que o Protheus entenda, sendo inglês, português ou espanhol, seria o encode windows-1252.
Não funcionou. Se eu retiro a função OemToAnsi os assentos saem desconfigurados, e continua aparecendo palavras com ???.
Como está o encode desse arquivo que é lido? Se estiver como UTF-8 não vai funcionar.
Tenta utilizar o NoAcento.
AAdd( a_condic, NoAcento(OemToAnsi( SubStr( cAux, 1, RAt( Space( 1 ), cAux )) - 1 ) ) )
cAux := SubStr( cAux, RAt( Space( 1 ), cAux ) + 1 )
Bem provável que é algum caracter em ascii.