Acentuação PDF - Via HaruPdf
Moderador: Moderadores
-
Robson Davila
- Usuário Nível 1

- Mensagens: 12
- Registrado em: 03 Mai 2021 12:20
- Localização: FORTALEZA - CE
Acentuação PDF - Via HaruPdf
Estou gerando um PDF (HaruPDF), utilizando um relatório já gerado em arquivo e utilizando os comandos Haru para criar o PDF.
O que está acontecendo: o PDF é gerado, mas os caracteres com acentuação, não está conseguindo exibir de forma correta.
Estou executando no Linux com o Harbour 3.2
O que está acontecendo: o PDF é gerado, mas os caracteres com acentuação, não está conseguindo exibir de forma correta.
Estou executando no Linux com o Harbour 3.2
- Anexos
-
- PDF gerado, mas os caracteres acentuados não são exibidos normalmente.
- Tela02.png (10.62 KiB) Exibido 1333 vezes
-
- Linhas do relatório no Linux, caracteres acentuados normalmente.
- Tela01.png (7.12 KiB) Exibido 1333 vezes
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Acentuação PDF - Via HaruPdf
E porque nao gerar o PDF em vez de utilizar um relatorio gerado em arquivo
???????
utilize a PDFCLASS do Quintas e saia desse problema
modo de utilizacao de PDFCLASS
utilize a PDFCLASS do Quintas e saia desse problema
modo de utilizacao de PDFCLASS
Código: Selecionar todos
oPDF := PDFClass()
IF oPDF == NIL
hwg_msginfo("Falha da criação do objeto PDF")
RETURN .F.
ENDIF
HB_GTINFO( HB_GTI_CLIPBOARDDATA, ::cFileName)
oPDF:cFileName := ::cFileName
oPDF:cDefaultPrinter := ::cDefaultPrinter
oPDF:SetType( PDFCLASS_LANDSCAPE )
oPDF:Begin()
nLinha := 100
nPagina := 1
nMaxCol := oPDF:MaxCol()
DO WHILE ! oQuery:Eof()
IF nLinha > 96
oPDF:AddPage()
oPDF:DrawBox( 0, 0, 9, 41, Nil, Nil, Nil ) // box esquerdo
oPDF:DrawImageSize( 0.5, 0.5, 8, 39, "logotipo.jpg" ) // logotipo
oPDF:DrawBox( 0, 41, 9, 117, Nil, Nil, Nil ) // box centro
oPDF:DrawText( 2.0, 42, RTRIM(oQuery1:Fields( "NomeUsuario" ):Value), nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 3.5, 42, RTRIM(oQuery1:Fields( "n_xLgr" ):Value) + ', ' + RTRIM(oQuery1:Fields( "n_nro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 5.0, 42,'BAIRRO - ' + RTRIM(oQuery1:Fields( "n_xBairro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 6.4, 42, "CEP " +oQuery1:Fields( "n_CEP" ):Value + ' - ' + RTRIM(oQuery1:Fields( "n_xMun" ):Value) + ' - ' + oQuery1:Fields( "n_xUF" ):Value + " - FONE: " +oQuery1:Fields( "n_fone" ):Value, Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 8.0, 42, 'CNPJ-'+RTRIM(oQuery1:Fields( "n_CNPJ" ):Value) + ' Insc.Est.-' + RTRIM(oQuery1:Fields( "n_IE" ):Value) , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawBox( 0, nMaxCol, 9, 41, Nil, Nil, Nil ) // box direito
oPDF:DrawText( 2, 120, "CONTAS A RECEBER " , Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 4, 120, "PAGINA Nr.: " + STRZERO(nPagina,4,0), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 6, 120, "DATA: " + DTOC(M->DAT_HOJE), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 8, 120, "HORA: " + TIME(), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawBox( 9, 0, 12, nMaxCol, Nil, Nil, Nil )
oPDF:DrawText( 11, 3, "PERIODO DE "+DTOC(::dPERINI)+" A "+DTOC(::dPERFIN), Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawBox( 12, 0, 15, nMaxCol, Nil, Nil, Nil )
oPDF:DrawText( 14, 3, "CLIENTE: "+STRZERO(oQuery:Fields( "CLIENTES_ID" ):Value,11,0)+"-"+oQuery:Fields( "nraz_soc" ):Value , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawBox( 15, 0, 17.5, nMaxCol, Nil, Nil, Nil )
oPDF:DrawText( 17, 01, "TITULO", Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 21, "VENCIMENTO" , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 41, "DIAS" , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 52, "MORA" , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 64, "JUROS" , Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 76, "VALOR TITULO", Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 99, "ACRESCIMOS", Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 17, 124, "TOTAL RECEBER", Nil, 10, "Helvetica-Bold", Nil, Nil )
nLinha := 19
nPagina += 1
ENDIF
nMULTA:=0.00
nJUROS:=0.00
IF (M->DAT_HOJE-oQuery:Fields( "DATVEN" ):Value) > 0
IF M->DAT_HOJE > oQuery:Fields( "VENPRO" ):Value
nMULTA=oQuery:Fields( "MORA" ):Value*(M->DAT_HOJE-oQuery:Fields( "DATVEN" ):Value)
nJUROS=(oQuery:Fields( "VALOR" ):Value*oQuery:Fields( "PER_MULTA" ):Value*(M->DAT_HOJE-oQuery:Fields( "DATVEN" ):Value))/3000
END
END
nACRESCIMOS+=nMULTA+nJUROS
nTOTALARECEBER+=oQuery:Fields( "VALOR" ):Value+nMULTA+nJUROS
oPDF:DrawText( nLinha, 00, STRZERO(oQuery:Fields( "DOCUMENTO" ):Value,9,0) + "/" + STRZERO(oQuery:Fields( "PARCELA" ):Value,2,0), Nil, 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 22, oQuery:Fields( "DATVEN" ):Value, Nil, 10, "Courier-Bold", Nil, Nil )
IF (M->DAT_HOJE-oQuery:Fields( "DATVEN" ):Value) > 0
oPDF:DrawText( nLinha, 41, (M->DAT_HOJE-oQuery:Fields( "DATVEN" ):Value), "9999", 10, "Courier-Bold", Nil, Nil )
ENDIF
oPDF:DrawText( nLinha, 50, oQuery:Fields( "MORA" ):Value, "@E 999.99", 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 64, oQuery:Fields( "PER_MULTA" ):Value, "@E 999.99", 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 75, oQuery:Fields( "VALOR" ):Value, "@E 99,999,999.99", 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 103, nMULTA+nJUROS, "@E 99,999.99", 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 126, oQuery:Fields( "VALOR" ):Value+nMULTA+nJUROS, "@E 99,999,999.99", 10, "Courier-Bold", Nil, Nil )
nLinha +=2
nTOTGERAL+=oQuery:Fields( "VALOR" ):Value
oQuery:MoveNext()
ENDDO
IF nTOTGERAL # 0.00
oPDF:DrawBox( nLinha, 0, nLinha+3, nMaxCol, Nil, Nil, Nil )
oPDF:DrawText( nLinha+2, 75, transform(nTOTGERAL,"@E 99,999,999.99") , Nil, 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha+2, 103, transform(nACRESCIMOS,"@E 99,999.99") , Nil, 10, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha+2, 126, transform(nTOTALARECEBER,"@E 99,999,999.99") , Nil, 10, "Courier-Bold", Nil, Nil )
ENDIF
oPDF:End( )
oPDF:PrintPreview( )
RETURN NIL HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Acentuação PDF - Via HaruPdf
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acentuação PDF - Via HaruPdf
Na Harupdf também existe codepage.
Se o relatório está com codepage diferente da Harupdf, não vai mostrar certo.
Se o relatório está com codepage diferente da Harupdf, não vai mostrar certo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
Robson Davila
- Usuário Nível 1

- Mensagens: 12
- Registrado em: 03 Mai 2021 12:20
- Localização: FORTALEZA - CE
Acentuação PDF - Via HaruPdf
Quintas, fiz dessa forma:
Def_Font := HPDF_GetFont( oPdf, "Courier", "CP1252" )
*
HPDF_Page_SetFontAndSize( oPagina, Def_Font, 24 )
HPDF_SetCurrentEncoder( oPagina, "CP1252" )
no momento da impressão da linha é assim:
C_BUF_SAIDA := "Relação de empresas Página: 001"
HPDF_Page_ShowText( oPagina, C_BUF_SAIDA )
Mas mesmo assim... não faz a impressão do caracter acentuado de forma correta.
Fica assim:
Rela‡Æo de empresas P gina : 001
O que pode estar havendo para não realizar a acentuação de forma correta?
Só um detalhe, estou utilizando no Lixux.
Def_Font := HPDF_GetFont( oPdf, "Courier", "CP1252" )
*
HPDF_Page_SetFontAndSize( oPagina, Def_Font, 24 )
HPDF_SetCurrentEncoder( oPagina, "CP1252" )
no momento da impressão da linha é assim:
C_BUF_SAIDA := "Relação de empresas Página: 001"
HPDF_Page_ShowText( oPagina, C_BUF_SAIDA )
Mas mesmo assim... não faz a impressão do caracter acentuado de forma correta.
Fica assim:
Rela‡Æo de empresas P gina : 001
O que pode estar havendo para não realizar a acentuação de forma correta?
Só um detalhe, estou utilizando no Lixux.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acentuação PDF - Via HaruPdf
Talvez a pergunta melhor seja: como faz pra enxergar esse relatório TXT com acentuação??
Qual a codepage do "visualizador" ?
Qual a codepage do "visualizador" ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Acentuação PDF - Via HaruPdf
Já quebrei muito a cabeça com isso!
as aplicações no modo console utilizam OEM-850 e o Windows ISO
se voce utiliza o editor notepad++ tem a facilidade de trocar a forma de mostrar o conteudo dos fontes.
o maior problema é quando o usuario utiliza a acentuação e é salvo nos bancos de dados, ai a coisa fica mais complicada porque vai estar salvo em OEM-850 e tem que mostrar como iso
fiz uma função de conversão que utilizo
um exemplo de utilização seria:
as aplicações no modo console utilizam OEM-850 e o Windows ISO
se voce utiliza o editor notepad++ tem a facilidade de trocar a forma de mostrar o conteudo dos fontes.
o maior problema é quando o usuario utiliza a acentuação e é salvo nos bancos de dados, ai a coisa fica mais complicada porque vai estar salvo em OEM-850 e tem que mostrar como iso
fiz uma função de conversão que utilizo
Código: Selecionar todos
substr(PTXT, I, 1)
CHAR_ASC := asc(substr(PTXT, I, 1))
INDICE := ascan(v850, CHAR_ASC)
if INDICE > 0
CHAR_ASC := alltrim(str(vUTF[INDICE]))
RET += "\uc1\u" + CHAR_ASC + "G"
else
RET += chr(CHAR_ASC)
endif
next
return(RET)
***************************************************************************************************
***
*** CONVERTE OS CARACTERES ASCII EM ANSI (DOS -> WINDOWS)
***
*** +-----------+-----------+-----------+
*** |CARACTER |ANSI | ASCII |
*** +-----------+-----------+-----------+
*** |CEDILHA |þà 231 199 | çÇ 135 128|
*** |A + TIL |Ò├ 228 195 | ãà 198 199|
*** |A + TREMA | ─ 196 | Ä 142|
*** |A + ACENTO |ß┴ 225 193 | áÁ 160 181|
*** |A + CRASE |Ó└ 224 192 | àÀ 133 183|
*** |O + ACENTO |¾Ë 243 211 | óÓ 162 224|
*** |O + CIRCUNF|¶È 244 212 | ôÔ 147 226|
*** |O + TIL |§ı 245 213 | õÕ 228 229|
*** |O + TREMA |÷ 246 | öÖ 148 153|
*** |U + ACENTO |·┌ 250 218 | úÚ 163 233|
*** |E + ACENTO |Ú╔ 233 201 | éÉ 130 144|
*** |E + CIRCUNF|Û╩ 234 202 | êÊ 136 210|
*** |I + ACENTO |Ý═ 237 205 | íÍ 161 214|
*** +-----------+-----------+-----------+
***
function ASCII_ANSI(PTXT)
private RET, TAMTXT, CHAR_TXT, I
if valtype(PTXT) # "C"
return(PTXT)
endif
vANSI := {231,228,225,224,243,244,245,246,250,233,234,237,199,195,196,193,192,211,212,213,218,201,202,205}
v850 := {135,198,160,133,162,147,228,148,163,130,136,161,128,199,142,181,183,224,226,229,233,144,210,214}
*Letras ç, ã, á, à, ó, ô, õ, ö, ú, é, ê, í, Ç, Ã, Ä, Á, À, Ó, Ô, Õ, Ú, É, Ê, Í
RET := ""
TAMTXT := len(PTXT)
for I = 1 to TAMTXT
CHAR_TXT := asc(substr(PTXT, I, 1))
INDICE := ascan(v850, CHAR_TXT)
if INDICE > 0
CHAR_TXT := vANSI[INDICE]
endif
RET += chr(CHAR_TXT)
next
return(RET)
***************************************************************************************************
Código: Selecionar todos
@ 0,0 say ascii_ansi(ENDERE_CLI)
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio@osite.com.br
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Acentuação PDF - Via HaruPdf
Boa tarde!
Esse negócio de codepage é um infern... demora pro cara pegar os macetes...
No caso de editores também é um problema as vezes, conforme o editor que você cria o PRG fonte, se editar e gravar em outro...lá se foi toda sua acentuação...Tem que ter cuidado nas configurações.
Eu resolvi meu problema de acentuação no PDF com essa função de substituição de caracteres que criei, apenas seto a fonte a ser usada no PDF para WinAnsiEncoding --> def_font := HPDF_GetFont( pdf, font_list[05], "WinAnsiEncoding" )
e uso assim:
cTexto=NOME (Nome é o campo do DBF)
String_Q_Vai_Ao_Pdf = Acentua_No_Pdf(cTexto)
HPDF_Page_TextOut( page, 50 ,20 , String_Q_Vai_Ao_Pdf)
Caso os caracteres sejam diferentes, é só descobrir qual é o correto e substituir na função.
Segue um exemplo em anexo que cria um modelinha de fatura, notem que fica com os acentos normais.
A linha de comando para a compilação está no início do arquivo PRG.
Esse negócio de codepage é um infern... demora pro cara pegar os macetes...
No caso de editores também é um problema as vezes, conforme o editor que você cria o PRG fonte, se editar e gravar em outro...lá se foi toda sua acentuação...Tem que ter cuidado nas configurações.
Eu resolvi meu problema de acentuação no PDF com essa função de substituição de caracteres que criei, apenas seto a fonte a ser usada no PDF para WinAnsiEncoding --> def_font := HPDF_GetFont( pdf, font_list[05], "WinAnsiEncoding" )
e uso assim:
cTexto=NOME (Nome é o campo do DBF)
String_Q_Vai_Ao_Pdf = Acentua_No_Pdf(cTexto)
HPDF_Page_TextOut( page, 50 ,20 , String_Q_Vai_Ao_Pdf)
Código: Selecionar todos
//---------------------------------------------------
// Substitui caracteres da string por codigos WinAnsiEncoding para acentuar no PDF
Function Acentua_No_Pdf(cTexto)
//---------------------------------------------------
Local aCaracters:={"Ç",Chr(199),;
"ç",Chr(231),;
"Á",Chr(193),;
"á",Chr(225),;
"Ã",Chr(195),;
"ã",Chr(227),;
"À",Chr(192),;
"à",Chr(224),;
"Â",Chr(194),;
"â",Chr(226),;
"Ä",Chr(196),;
"ä",Chr(228),;
"É",Chr(201),;
"é",Chr(233),;
"Ê",Chr(202),;
"ê",Chr(234),;
"Ë",Chr(203),;
"ë",Chr(235),;
"Í",Chr(205),;
"í",Chr(237),;
"Ó",Chr(211),;
"ó",Chr(243),;
"Õ",Chr(213),;
"õ",Chr(245),;
"Ô",Chr(212),;
"ô",Chr(244),;
"Ú",Chr(218),;
"ú",Chr(250),;
"Ü",Chr(220),;
"ü",Chr(252),;
"Ñ",Chr(209),;
"ñ",Chr(241),;
"ª",Chr(170),;
"º",Chr(176)}
FOR F=1 TO LEN(aCaracters)/2 step 2
cCaracterAtual=aCaracters[f]
cCaracterNovo=aCAracters[f+1]
cTexto=ATREPL(cCaracterAtual,cTexto, cCaracterNovo)
NEXT
Return cTextoCaso os caracteres sejam diferentes, é só descobrir qual é o correto e substituir na função.
Segue um exemplo em anexo que cria um modelinha de fatura, notem que fica com os acentos normais.
A linha de comando para a compilação está no início do arquivo PRG.
- Anexos
-
Pdf_Acentuado.pdf- Criado pelo programa.
- (1.48 KiB) Baixado 56 vezes
-
acentopdf.prg- A linha de comando para a compilação está no início do arquivo.
- (11.5 KiB) Baixado 56 vezes
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Acentuação PDF - Via HaruPdf
Olá!
Talvez consiga usar uma das funções de conversão disponíveis:
Talvez consiga usar uma das funções de conversão disponíveis:
C:\hb32\Test>HBMK2 -FIND ANSI |MORE
hbtip.hbc (instalado):
ANSIToHtml()
HtmlToANSI()
hbwin.hbc (instalado):
win_ANSIToOEM()
win_ANSIToWide()
win_OEMToANSI()
win_WideToansi()
hbxpp.hbc (instalado):
ConvToANSICP()
xhb.hbc (instalado):
ANSIToWide()
WideToANSI()
Núcleo Harbour (instalado):
hb_ANSIToOEM()
hb_OEMToANSI()
C:\hb32\Test>
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Acentuação PDF - Via HaruPdf
Sei lá, vocês que complicam.
No Windows só sigo o padrão do Windows.
E NÃO permito acentuação, só mesmo acentuação aonde quero.
No Harbour é PTISO, default do Windows brasileiro.
No MySQL idem.
No PDF WinAnsi, que é o default do Windows brasileiro.
No editor Programmers Notepad, o default já é o do Windows, que no Windows brasileiro é PTISO.
Em HTML aparece normalmente o que sai do MySQL.
Na GTWVG, ela faz parte do Harbour, não precisa configurar nada.
Agora em minigui talvez seja diferente, porque minigui tem seu próprio esquema de codepage.
Em webservice.... tem a ver com o webservice e não com o Harbour.
Que eu me lembre, nem os webservices de nota fiscal do Brasil respeitam codepage.
Agora... quer ficar aproveitando informação antiga junto com nova.... aí não tem codepage que resolva, e nem conversor que resolva.
Quer ler páginas de internet feitas pra outros idiomas? aí também não tem codepage que resolva.
Quer ler webservices lixo, que a maioria é, aí também não tem codepage que resolva.
No Windows só sigo o padrão do Windows.
E NÃO permito acentuação, só mesmo acentuação aonde quero.
No Harbour é PTISO, default do Windows brasileiro.
No MySQL idem.
No PDF WinAnsi, que é o default do Windows brasileiro.
No editor Programmers Notepad, o default já é o do Windows, que no Windows brasileiro é PTISO.
Em HTML aparece normalmente o que sai do MySQL.
Na GTWVG, ela faz parte do Harbour, não precisa configurar nada.
Agora em minigui talvez seja diferente, porque minigui tem seu próprio esquema de codepage.
Em webservice.... tem a ver com o webservice e não com o Harbour.
Que eu me lembre, nem os webservices de nota fiscal do Brasil respeitam codepage.
Agora... quer ficar aproveitando informação antiga junto com nova.... aí não tem codepage que resolva, e nem conversor que resolva.
Quer ler páginas de internet feitas pra outros idiomas? aí também não tem codepage que resolva.
Quer ler webservices lixo, que a maioria é, aí também não tem codepage que resolva.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Acentuação PDF - Via HaruPdf
Infelizmente a libharu não suporta utf-8. E OEM também não é suportada, acho que por ser muito antiga. Caso o seu sistema use uma dessas tem que converter para winansi
