Estou implementando o haruPDF nos meus PDFs e percebi que as letras acentuadas não saem no PDF, usando CoedePage ANSI.
Como Setar para ANSI ou outra CodePage?
Uso o xHarbour 123 com BCC 7.3.
Desde já agradeço a ajuda.
Meus fontes:
Código: Selecionar todos
Function Main()
...
...
nCol := 06
sOrient := 'R'
nLBrasao := 07
nCBrasao := 13
nLeft := 32
nRight := 820
nHeight := 09
nFonte := 08
nLpi := 06
nMAXLI := 53
nLAss := 170
nCAss1 := 22
nCAss2 := 190
nPosBras := 3
oPdf := HPDF_New()
IF oPdf == NIL
MsgAtencao( "Erro ao criar o documento PDF" )
Break
ENDIF
HPDF_SetCompressionMode( oPdf, HPDF_COMP_ALL )
pgheight := nil
pgwidth := nil
pg_ := 0
cl := 500
rel_cab(1)
...
...
Return
STATIC Procedure REL_CAB(qt) // cabecalho do relatorio
Local Fonte, Img
If qt > 0 // se parametro maior que 0
cl := cl + qt // soma no contador de linhas
EndIf
If cl > nmaxli .or. qt = 0 // quebra de pagina
//REL_RDP( oPage ) // imprime rodape' do relatorio
sCnpj =''
sTituloFundo='Fundo:'
sGestor1 =''
sGestor2 =''
sGestor3 =''
nGestor3 =0
nGestor4 =0
sSec1 = ''
sSec2 = ''
nSec3 = 0
nSec4 = 0
sAlm1 = ''
sAlm2 = ''
nAlm3 = 0
nAlm4 = 0
pg_++
//PegaAssinatura( sFundo )
oPage := HPDF_AddPage(opdf) // HPDF_PAGE_PORTRAIT
HPDF_Page_SetSize(oPage, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE)
pgHeight := HPDF_Page_GetHeight(opage) - 40
pgWidth := HPDF_Page_GetWidth(opage)
//HPdfAtSay( "Relatório de Teste", 1, 1, "Helvetica", 12, {0, 0, 255})
//HPdfAtSay( "Página " + LTrim(Str(pg_)), 1, 50, "Helvetica", 10, {100, 100, 100})
hPdfAtSay( HB_OemToAnsi(cl_GetNomeUf( M->par_UF, .t. )) , 01, 2 + MMVBrasao1 + nPosBras, 'Times-Roman', 8 )
hPdfAtSay( "Página: " + Transform(pg_, "999") + '/ ' , 01, 104, 'Times-Roman', 8 ) //
hPdfAtSay( HB_OemToAnsi( nEmp ), 02, 2 + MMVBrasao1 + nPosBras, 'Times-Roman', 8 )
hPdfAtSay( "LEI Nº 4.320/64" , 02, 104, 'Times-Roman', 9 )
hPdfAtSay( "C.N.P.J.: " + Transform(sCNPJ, "@R 99.999.999/9999-99"), 03, 2 + MMVBrasao1 + nPosBras, 'Times-Roman', 8 )
hPdfAtSay( ALLTrim(HB_OemToAnsi(M->PAR_RESOL)), 03, 104, 'Times-Roman', 8 )
//If mCab = 1
hPdfAtSay( "PAGAMENTOS ORÇAMENTÁRIOS REALIZADOS ", 04, 2 + MMVBrasao1 + nPosBras, 'Times-Roman', 8 )
//ElseIf mCab = 2
// PdfAtSay( "PAGAMENTOS DE RESTOS A PAGAR REALIZADOS ", 05, nCol + MMVBrasao1 + nPosBras, "R" )
//
//Endif
hPdfAtSay( "ANEXO IX", 04, 104, 'Times-Roman', 8 )
hPdfAtSay( HB_OemToAnsi(sTITULOFundo), 05, 2 + MMVBrasao1 + nPosBras, 'Times-Roman', 8 )
hPdfAtSay( "Competência: " + AllTrim(HB_OemToAnsi(nmes(Val(mMesRel)))) + ' / ' + par_aa, 5, 104, 'Times-Roman', 8 )
ofont := HPDF_GetFont(oPdf, "Courier", NIL)
HPDF_Page_SetFontAndSize(oPage, ofont, 8)
cl := qt + 09; pg_++
EndIf
Return
FUNCTION HPdfAtSay( cTexto, nLinha, nCol, cFonteName, nTamanho, cOrient, nCorRGB)
Local nEspaco := INT( (pgHeight / 11) / nLPI)
LOCAL nX, nY := pgHeight - ((nLinha - 1) * nEspaco)
LOCAL oFont
cFonteName := If(cFonteName = Nil, 'Courier', cFonteName)
oFont := HPDF_GetFont(oPage, cFonteName, NIL)
nTamanho := If(nTamanho = Nil, nFonte, nTamanho)
If nTamanho = 6
nX := INT(nCol * 3.6) //+ 50
ElseIf nTamanho = 7
nX := INT(nCol * 4.2) //+ 50
ElseIf nTamanho = 8
nX := INT(nCol * 4.8) //+ 50
ElseIf nTamanho = 9
nX := INT(nCol * 5.4) //+ 50
ElseIf nTamanho = 10
nX := INT(nCol * 6) //+ 50
ElseIf nTamanho = 11
nX := INT(nCol * 6.6) //+ 50
ElseIf nTamanho = 12
nX := INT(nCol * 7.2) //+ 50
Else
nX := INT(nCol * 6) //+ 50
Endif
// Orientação do texto (opcional)
// cOrient pode ser: "L2R", "R2L", "U2D", "D2U", "ROT90", "ROT270"
DO CASE
CASE cOrient == "R2L" // Direita para esquerda
a := -1 ; b := 0 ; c := 0 ; d := 1
nX += 0 // Pode ajustar margem se quiser
CASE cOrient == "U2D" // De cima para baixo
a := 0 ; b := -1 ; c := 1 ; d := 0
CASE cOrient == "D2U" // De baixo para cima
a := 0 ; b := 1 ; c := -1 ; d := 0
CASE cOrient == "ROT90" // Roda 90° (escreve de baixo para cima)
a := 0 ; b := 1 ; c := -1 ; d := 0
CASE cOrient == "ROT270" // Roda 270° (cima para baixo)
a := 0 ; b := -1 ; c := 1 ; d := 0
OTHERWISE // "L2R" ou padrão
a := 1 ; b := 0 ; c := 0 ; d := 1
ENDCASE
IF nCorRGB != NIL
HPDF_Page_SetRGBFill(oPage, (nCorRGB[1]/255), (nCorRGB[2]/255), (nCorRGB[3]/255))
ENDIF
ofonte := HPDF_GetFont(oPdf, cFonte, NIL)
HPDF_Page_BeginText( opage )
HPDF_Page_SetFontAndSize( opage, oFonte, nTamanho )
If cOrient = Nil
HPDF_Page_TextOut( opage, nX, nY, cTexto)
Else
HPDF_Page_SetTextMatrix(oPage, a, b, c, d, nX, nY)
HPDF_Page_ShowText(oPage, HB_OemToAnsi(cTexto))
Endif
HPDF_Page_EndText( opage )
RETURN NIL


