Gerar PDF
Moderador: Moderadores
Gerar PDF
Entendo.
Independentemente do contrib, vc poderia me dizer como fazer para colocar imagens e cores nas letras?
Independentemente do contrib, vc poderia me dizer como fazer para colocar imagens e cores nas letras?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gerar PDF
Tem no exemplo da harupdf, nos manuais pela internet da harupdf também.
Isso não faz parte do meu dia a dia.
Apenas coindiciu que andei olhando isso há pouco tempo, mas não fiz uso.
Isso não faz parte do meu dia a dia.
Apenas coindiciu que andei olhando isso há pouco tempo, mas não fiz uso.
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/
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Gerar PDF
Bom dia!
Segue a pasta Contrib\hbhpdf (para colocar dentro da pasta do Harbour) Ficara assim:
C:\Harbour\Contrib\hbhpdf ou C:\MiniGui\Harbour\Contrib\hbhpdf ou C:\MiniGui\Harbour\Contrib\hbhpdf etc...
https://hmgextended.com/files/CONTRIB/h ... -setup.exe (Aqui na instalacao da MiniGui vem a pasta Contrib completa...)
e também um exemplo prontinho de duplicata que fiz em PDF com quadros, imagem e cores nas letras. O código que está no arquivo Zip é este:
cjp escreveu: vc poderia me dizer como fazer para colocar imagens e cores nas letras?
Segue a pasta Contrib\hbhpdf (para colocar dentro da pasta do Harbour) Ficara assim:
C:\Harbour\Contrib\hbhpdf ou C:\MiniGui\Harbour\Contrib\hbhpdf ou C:\MiniGui\Harbour\Contrib\hbhpdf etc...
https://hmgextended.com/files/CONTRIB/h ... -setup.exe (Aqui na instalacao da MiniGui vem a pasta Contrib completa...)
e também um exemplo prontinho de duplicata que fiz em PDF com quadros, imagem e cores nas letras. O código que está no arquivo Zip é este:
Código: Selecionar todos
// Esse e´ um exemplo completo, retire as linhas desnecessarias para ir treinando...
// Compilar assim:
// Hbmk2.exe prog.prg hbct.hbc hbhpdf.hbc (Uso o Harbour 3.2)
// https://github.com/libharu/libharu/wiki
// http://libharu.sourceforge.net/graphics.html
// https://github.com/libharu/libharu/wiki/API%3A-Graphics
// Haru Pdf is based on pixels for default resolution 72dpi. Also note the coordinates that are different from HMG HPDF.
// http://libharu.sourceforge.net/graphics.html
//
Function Imp_Fatura(cAlias)
//--------------------------------------------------------
LOCAL page, cLogo, AlturaPdf, LarguraPdf, alturaImagem, LarguraImagem, def_font, f, aaa, angle1, rad1
LOCAL Caminho:="" // <= Local alternativo para arquivos a serem usados...
LOCAL cFileToSave:=Caminho+ARQ_TEMPORARIO()+".PDF"
LOCAL Tela3:=SaveScreen()
LOCAL font_list := { ;
"Courier", ;//01
"Courier-Bold", ;//02
"Courier-Oblique", ;//03
"Courier-BoldOblique", ;//04
"Helvetica", ;//05
"Helvetica-Bold", ;//06
"Helvetica-Oblique", ;//07
"Helvetica-BoldOblique", ;//08
"Times-Roman", ;//09
"Times-Bold", ;//10
"Times-Italic", ;//11
"Times-BoldItalic", ;//12
"Symbol", ;//13
"ZapfDingbats" ;//14
}
Local encodings := { ; //
"StandardEncoding",; // 01
"MacRomanEncoding",; // 02
"WinAnsiEncoding", ; // 03 USO ESTA EM PDF, a mesma que o Quintas usa
"ISO8859-2", ; // 04
"ISO8859-3", ; // 05
"ISO8859-4", ; // 06
"ISO8859-5", ; // 07
"ISO8859-9", ; // 08
"ISO8859-10", ; // 09
"ISO8859-13", ; // 10
"ISO8859-14", ; // 11
"ISO8859-15", ; // 12
"ISO8859-16", ; // 13
"CP1250", ; // 14
"CP1251", ; // 15
"CP1252", ; // 16
"CP1254", ; // 17
"CP1257"} // , ; // 18
//"KOI8-R", ; // ; // 19
// "Symbol-Set", ; // 20
// "ZapfDingbats-Set" } // 21
pdf := HPDF_New()
IF pdf == NIL
Alert( "N"+CHR(198)+"o foi poss"+CHR(161)+"vel criar o arquivo PDF!" )
RETURN NIL
ENDIF
/* Determina o mode de compressão */
HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
/*
// Colocar senha e permissão
//
HPDF_SetPassword( pdf, "owner", "user" )
HPDF_SetPermission( pdf, HPDF_ENABLE_READ ) // cannot print
HPDF_SetEncryptionMode( pdf, HPDF_ENCRYPT_R3, 16 )
*/
page := HPDF_AddPage( pdf )
HPDF_Page_SetHeight(page, 841)
HPDF_Page_SetWidth(page, 595)
AlturaPdf := HPDF_Page_GetHeight( page ) // 841 Sao os DEFAULT, pode mudar acima
LarguraPdf := HPDF_Page_GetWidth( page ) // 595 Sao os DEFAULT, pode mudar acima
HPDF_Page_SetLineWidth( page, 1 ) // Espessura dos traços
// Para criar quadros, criei minha propria funcao a partir da original HPDF_Page_Rectangle:
// A original tem esses parametros:
// HPDF_Page_Rectangle( page , margem_esquerda , margem_inferior , largura_esq_para_direita , comprimento_de_baixo_para_cima )
// A minha tem esses (mais faceis)
// Insere_Retangulo( page, nTop, nEsquerda, nBotton, nDireita )
Insere_retangulo( page , 20 , 10 , 820, 585) // Quadro externo maior
Insere_retangulo( page , 100 , 340 , 180, 580) // Quadro Cnpj/Emissao
Insere_retangulo( page , 140 , 340 , 140, 580) //Separador horizontal Quadro Cnpj/Emissao
Insere_retangulo( page , 100 , 470 , 180, 470) //Separador vertical Quadro Cnpj/Emissao
Insere_retangulo( page , 190 , 15 , 310, 580) // Quadro Destinatario
Insere_retangulo( page , 230 , 15 , 230, 580) //Separador horizontal Quadro Destinatario
Insere_retangulo( page , 270 , 15 , 270, 580) //Separador horizontal Quadro Destinatario
Insere_retangulo( page , 190 , 400 , 230, 400) //Separador vertical apos NOME RAZAO
Insere_retangulo( page , 190 , 470 , 230, 470) //Separador vertical apos VENCIMENTO
Insere_retangulo( page , 230 , 485 , 270, 485) //Separador vertical apos BAIRRO
Insere_retangulo( page , 270 , 470 , 310, 470) //Separador vertical apos MUNICIPIO
Insere_retangulo( page , 335 , 15 , 640, 580) // Quadro Dados do documento / DESCRICAO da fatura
Insere_retangulo( page, 350, 15, 350, 580) //Separador horizontal Quadro Dados do documento
Insere_retangulo( page, 335, 330, 640, 330) //Separador vertical Quadro Dados do documento
Insere_retangulo( page, 335, 390, 640, 390) //Separador vertical Quadro Dados do documento
Insere_retangulo( page, 335, 480, 640, 480) //Separador vertical Quadro Dados do documento
Insere_retangulo( page , 645, 390, 680, 580) // Quadro Valor Total da fatura
Insere_retangulo( page , 685, 15, 760, 580) // Quadro Informacoes adicionais
Insere_retangulo( page, 743, 15, 743, 580) //Separador horizontal Informacoes adicionais
Insere_retangulo( page , 765 , 15 , 810, 580) // Quadro Final data do recebimento
Insere_retangulo( page , 780 , 15, 780, 580) //Separador horizontal Quadro Final
Insere_retangulo( page , 780 , 110, 810, 110) //Separador vertical Quadro Final
Insere_retangulo( page , 780 , 265, 810, 265) //Separador vertical Quadro Final
Insere_retangulo( page , 780 , 490, 810, 490) //Separador vertical Quadro Final
// Obrigado a colocar APOS CONFECIONAR GRAFICOS
HPDF_Page_Stroke( page ) // Salva um PATH (caminho)
// Um PATH (caminho) é composto por segmentos de linhas retas e curvas, e caminhos definem formas e regiões.
//SELE("FATURA_REL")
//seek &cAlias->PEDIDO
//SET RELATION TO FIRMA INTO CD_CNPJ
//cLogo=ALLTRIM(CD_CNPJ->LOGOTIPO)
cLogo="logo_teste.jpg"
// Logotipo - MELHOR COM 360 X 122 PIXEL
//IF EXISTE_ARQ(CAMINHO+cLogo)
image1 = HPDF_LoadJPEGImageFromFile(pdf, CAMINHO+cLogo)
LarguraImagem := int ( HPDF_Image_GetWidth(image1) *.4)
AlturaImagem := int ( HPDF_Image_GetHeight(image1) *.4 )
ImagemX := 30
ImagemY := HPDF_Page_GetHeight(page) - 30 - AlturaImagem
HPDF_Page_DrawImage(page, image1, ImagemX, ImagemY, LarguraImagem, AlturaImagem)
//ELSE
// hb_Alert( "O arquivo "+cLogo+" lan"+CHR(135)+"ado no campo LOGOTIPO;"+;
// "no cadastro de CNPJ ("+ALLTRIM(STR(&cAlias->FIRMA))+") n"+CHR( 198)+"o foi encontrado!;"+;
// "A fatura n"+CHR( 198)+"o ter"+CHR( 160)+" logotipo",,,15 ) // Aguarda usuario ou sai automatico em 15 segundos....
//ENDIF
//----- BEGIN TEXT -----------------------------------------
HPDF_Page_BeginText( page )
// Mini cabecalhos dos quadros
def_font := HPDF_GetFont( pdf, font_list[05], "WinAnsiEncoding" )
HPDF_Page_SetFontAndSize( page, def_font, 06 ) // Se colocar a fonte em forma de vetor da erro, entao atribui a variavel def_font.
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 350) , AlturaPdf - 110 , "CNPJ")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 485) , AlturaPdf - 110 , Acentua_No_Pdf("DATA da EMISS"+CHR(199)+"O"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 350) , AlturaPdf - 150 , Acentua_No_Pdf("INSCRI"+CHR(128)+CHR(199)+"O ESTADUAL"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 185 , Acentua_No_Pdf("DESTINAT"+CHR(181)+"RIO"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 200 , Acentua_No_Pdf("NOME/RAZ"+CHR(199)+"O SOCIAL"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 410) , AlturaPdf - 200 , "VENCIMENTO")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 485) , AlturaPdf - 200 , "CNPJ/CPF")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 240 , Acentua_No_Pdf("ENDERE"+CHR(128)+"O"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 360) , AlturaPdf - 240 , "BAIRRO")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 505) , AlturaPdf - 240 , "CEP")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 280 , Acentua_No_Pdf("MUNIC"+CHR(214)+"PIO-UF"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 485) , AlturaPdf - 280 , Acentua_No_Pdf("INSCRI"+CHR(128)+CHR(199)+"O ESTADUAL") )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 330 , "DADOS DO DOCUMENTO")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 345 , Acentua_No_Pdf("DESCRI"+CHR(128)+CHR(199)+"O"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 340) , AlturaPdf - 345 , "QUANTIDADE")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 420) , AlturaPdf - 345 , Acentua_No_Pdf("VALOR UNIT"+CHR(181)+"RIO"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 520) , AlturaPdf - 345 , "VALOR TOTAL")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 405) , AlturaPdf - 655 , Acentua_No_Pdf("VALOR TOTAL DA FATURA DE LOCA"+CHR(128)+CHR(199)+"O"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 680 , "INFORMACOES ADICIONAIS")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 775 , Acentua_No_Pdf("DECLARAMOS NOSSA CONCORD"+CHR(182)+"NCIA COM A PRESENTE FATURA DE LOCA"+CHR(128)+CHR(199)+"O"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 790 , "DATA DO RECEBIMENTO")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 115) , AlturaPdf - 790 , Acentua_No_Pdf("IDENTIFICA"+CHR(128)+CHR(199)+"O E ASSINATURA DO RECEBEDOR"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 330) , AlturaPdf - 790 , Acentua_No_Pdf("NOME LEG"+CHR(214)+"VEL"))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 495) , AlturaPdf - 790 , Acentua_No_Pdf("FATURA DE LOCA"+CHR(128)+CHR(199)+"O Nº"))
HPDF_Page_SetFontAndSize( page, def_font, 08 ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
// Dados da nota
// Esses dados seriam de um arquivo qualquer....
PEDIDO=123456
N_CNPJ="12.234.678/0001-99"
EMISSAO=DATE()
INSC_EST=""
RAZAO="Google Apple Microsoft & Tesla Group"
ENDERECO="Tesla Road"
CIDADE="Austin-TX"
BAIRRO="Tx 78725"
FONE="469-232-9270"
FIRMA=1
INFO01="Teste de PDF 01"
INFO02="Teste de PDF 02"
INFO03="Teste de PDF 03"
OBS_FINAL="Aqui vai info sobre qquer coisa..."
CEP="012456-123"
// Para mudar a cor da fonte/linha
// HPDF_Page_SetRGBFill( page , Red , Green , Blue )
HPDF_Page_SetRGBFill( page, 1.0, 0.0, 0.0 ) // <- vermelho
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 425) , AlturaPdf - 60 , Acentua_No_Pdf("Fatura de Loca"+CHR(135)+CHR(198)+"o No. ") +ALLTRIM(STR(PEDIDO)) ) // +"/"+YEAR(EMISSAO))
HPDF_Page_SetRGBFill( page, 1.0, 1.0, 0.0 ) // <- Amarelo
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 355) , AlturaPdf - 130 , N_CNPJ )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 515) , AlturaPdf - 130 , DTOC(EMISSAO) )
HPDF_Page_SetRGBFill( page, 0.0, 1.0, 1.0 ) // <- Ciano
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 360) , AlturaPdf - 170 , IF(EMPTY(INSC_EST),"Isento",INSC_EST) )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 500) , AlturaPdf - 170 , Acentua_No_Pdf("Via "+CHR(233)+"nica"))
// Dados do emissor da nota (nossos dados)
HPDF_Page_SetRGBFill( page, 0.0, 0.0, 1.0 ) // <- Azul
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 25) , AlturaPdf - 105 , ;
IF( FIRMA=0, "FIRMA NAO LANCADA NO PEDIDO->"+ALLTRIM(STR(PEDIDO)) , ;
IF( EMPTY(RAZAO), "RAZAO FIRMA/CNPJ->"+ALLTRIM(STR(FIRMA))+"NAO PREENCHIDA",Acentua_No_Pdf(RAZAO) ) ) )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 120 , IF(EMPTY(ENDERECO),"ENDERECO",Acentua_No_Pdf(ENDERECO)))
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 135 , IF(EMPTY(BAIRRO),"BAIRRO",Acentua_No_Pdf(BAIRRO)+" Cep."+CEP ) )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 150 , IF(EMPTY(CIDADE),"CIDADE-UF",Acentua_No_Pdf(CIDADE)) )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 165 , "Fone: "+FONE )
// Dados do cliente
/*
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 25) , AlturaPdf - 220 , IF(EMPTY(RAZAO),Acentua_No_Pdf(NOME),Acentua_No_Pdf(RAZAO)) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 425) , AlturaPdf - 220 , IF(EMISSAO=PRORROGA,"A vista",DTOC(PRORROGA) ) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 485) , AlturaPdf - 220 , IF(Empty(CGC_CPF),"- - -",CGC_CPF ) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 25) , AlturaPdf - 260 , Acentua_No_Pdf(ENDERECO)+" "+Acentua_No_Pdf(COMPL) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 360) , AlturaPdf - 260 , Acentua_No_Pdf(BAIRRO) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 530) , AlturaPdf - 260 , IF(Empty(CEP),"- - -",CEP ) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 25) , AlturaPdf - 300 , Acentua_No_Pdf(CIDADE) )
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 475) , AlturaPdf - 300 , IF(Empty(INSC_RG),"- - -",INSC_RG ) )
*/
// Imprime CENTRALIZADO
// tw := HPDF_Page_TextWidth( page, page_subtitle ) //152.90 -> TAMANHO DE PIXELS QUE OCUPA O TEXTO CONFORME TEXTO E SIZE SELECIONADO
// HPDF_Page_TextOut( page, ( width - tw ) / 2, height - 43, page_subtitle )
// Dados da Discriminacao
/*
SELE("FAT_DISCRI")
OrdScope( 0 , &cAlias->PEDIDO )
OrdScope( 1 , &cAlias->PEDIDO )
SUM TOTAL TO TOT_COM
GO TOP
DO WHILE !EOF()
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 30) , AlturaPdf - (360 + LINHA*9) , Acentua_No_Pdf(DESCRICAO) )
IF QUANT<>0
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 340) , AlturaPdf - (360 + LINHA*9) , TRANSFORM(QUANT,"@E 999,999.99") )
ENDIF
IF UNIT<>0
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 420) , AlturaPdf - (360 + LINHA*9) , TRANSFORM(UNIT,"@E 9,999,999.99") )
ENDIF
IF TOTAL<>0
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 520) , AlturaPdf - (360 + LINHA*9) , TRANSFORM(TOTAL,"@E 99,999,999.99") )
ENDIF
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 520) , AlturaPdf - 673 , TRANSFORM(TOT_COM,"@E 99,999,999.99") )
SKIP
ENDDO
SELE("FATURA_REL")
*/
HPDF_Page_SetRGBFill( page, 0.0, 1.0, 0.0 ) // <- Verde
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 30) , AlturaPdf - 700 , Acentua_No_Pdf(INFO01) )
HPDF_Page_SetRGBFill( page, 0.0, 0.0, 0.0 ) // <- Preto
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 30) , AlturaPdf - 715 , Acentua_No_Pdf(INFO02) )
HPDF_Page_SetRGBFill( page, 0.3, 0.8, 0.5 ) // <- Sei la que cor....
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 30) , AlturaPdf - 730 , Acentua_No_Pdf(INFO03) )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 510) , AlturaPdf - 802 , ALLTRIM(STR(PEDIDO)) )
def_font := HPDF_GetFont( pdf, font_list[05], "WinAnsiEncoding" ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
HPDF_Page_SetFontAndSize( page, def_font, 10 ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
HPDF_Page_SetRGBFill( page, 0.9, 0.3, 0.7 ) // Sei la que cor...
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 755 , Acentua_No_Pdf(OBS_FINAL))
HPDF_Page_EndText( page )
//----- END TEXT -----------------------------------------
/*
// ------ Escrita vertical----------------------
HPDF_Page_BeginText( page )
angle1 := 90 // A rotation of 30 degrees.
rad1 := angle1 / 180 * 3.141592 // Calcurate the radian value.
HPDF_Page_SetTextMatrix( page, Cos( rad1 ), Sin( rad1 ), - Sin( rad1 ), Cos( rad1 ), 20, 162 )
HPDF_Page_SetFontAndSize( page, def_font, 7 ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
HPDF_Page_TextOut( page, 21 , height -126 , "Hora." )
HPDF_Page_TextOut( page, 27 , height -126 , "Trab." )
HPDF_Page_SetFontAndSize( page, def_font, 10 ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
HPDF_Page_TextOut( page, 25 , height -168 , "Dia" )
HPDF_Page_EndText( page )
//------- Fim da Escrita vertical---------------
*/
/*
// OUTRA FORMA DE ESCREVER O TEXTO: PAGE_SHOWTEXT (ALEM DE PAGE_TEXTOUT)
HPDF_Page_BeginText( page )
HPDF_Page_MoveTextPos( page, 60, height - 105 )
FOR i := 1 TO Len( font_list )
samp_text := "abcdefgABCDEFG12345!#$%&+-@?"
font := HPDF_GetFont( pdf, font_list[ i ], "WinAnsiEncoding" )
HPDF_Page_SetFontAndSize( page, def_font, 9 )
HPDF_Page_ShowText( page, font_list[ i ] )
HPDF_Page_MoveTextPos( page, 0, - 18 )
HPDF_Page_SetFontAndSize( page, font, 20 )
HPDF_Page_ShowText( page, samp_text )
HPDF_Page_MoveTextPos( page, 0, - 20 )
NEXT
HPDF_Page_EndText( page )
*/
IF HPDF_SaveToFile( pdf, cFileToSave ) != 0 // _PDF
? "0x" + hb_NumToHex( HPDF_GetError( pdf ), 4 ), hb_HPDF_GetErrorString( HPDF_GetError( pdf ) ), HPDF_GetErrorDetail( pdf )
ENDIF
HPDF_Free( pdf ) // _PDF
IF hb_FileExists( cFileToSave )
BB = "START sumatraPDF.EXE "+cFileToSave // BB = "START "&CAMINHO"+"READER.EXE &NET7"+".PDF"
HB_RUN( BB )
HB_Alert(cFileToSave+" Aberto em anexo!")
ELSE
HB_Alert(cFileToSave+" nao encontrado!")
ENDIF
RETURN // hb_FileExists( cFileToSave )
//=== Fim do modulo principal ==================================================*
//=============================================================================*
// Substitui caracteres da string por codigos WinAnsiEncoding para acentuar em HaruPDF
Function Acentua_No_Pdf(cTexto)
//- - - - - - - - - - - - - - -
Local aCodAntes:= {CHR(181),; // "Á" Chr(193) 01
CHR(160),; // "á" Chr(225) 02
CHR(199),; // "Ã" Chr(195) 03
CHR(128),; // "Ç" Chr(199) 04
CHR(198),; // "ã" Chr(227) 05
CHR(183),; // "À" Chr(192) 06
CHR(133),; // "à" Chr(224) 07
CHR(182),; // "Â" Chr(194) 08
CHR(131),; // "â" Chr(226) 09
CHR(142),; // "Ä" Chr(196) 10
CHR(144),; // "É" Chr(201) 11
CHR(210),; // "Ê" Chr(202) 12
CHR(136),; // "ê" Chr(234) 13
CHR(211),; // "Ë" Chr(203) 14
CHR(137),; // "ë" Chr(235) 15
CHR(214),; // "Í" Chr(205) 16
CHR(161),; // "í" Chr(237) 17
CHR(224),; // "Ó" Chr(211) 18
CHR(162),; // "ó" Chr(243) 19
CHR(229),; // "Õ" Chr(213) 20
CHR(228),; // "õ" Chr(245) 21
CHR(181),; // "ä" Chr(228) 22
CHR(226),; // "Ô" Chr(212) 23
CHR(147),; // "ô" Chr(244) 24
CHR(233),; // "Ú" Chr(218) 25
CHR(163),; // "ú" Chr(250) 26
CHR(154),; // "Ü" Chr(220) 27
CHR(129),; // "ü" Chr(252) 28
CHR(135),; // "ç" Chr(231) 29
CHR(130),; // "é" Chr(233) 30
CHR(165),; // "Ñ" Chr(209) 31
CHR(164),; // "ñ" Chr(241) 32
CHR(166),; // "ª" Chr(170) 33
CHR(167)} // "º" Chr(176) 34
Local aCodDepois:={Chr(193),; // "Á" CHR(181) 01
Chr(225),; // "á" CHR(160) 02
Chr(195),; // "Ã" CHR(199) 03
Chr(199),; // "Ç" CHR(128) 04
Chr(227),; // "ã" CHR(198) 05
Chr(192),; // "À" CHR(183) 06
Chr(224),; // "à" CHR(133) 07
Chr(194),; // "Â" CHR(182) 08
Chr(226),; // "â" CHR(131) 09
Chr(196),; // "Ä" CHR(142) 10
Chr(201),; // "É" CHR(144) 11
Chr(202),; // "Ê" CHR(210) 12
Chr(234),; // "ê" CHR(136) 13
Chr(203),; // "Ë" CHR(211) 14
Chr(235),; // "ë" CHR(137) 15
Chr(205),; // "Í" CHR(214) 16
Chr(237),; // "í" CHR(161) 17
Chr(211),; // "Ó" CHR(224) 18
Chr(243),; // "ó" CHR(162) 19
Chr(213),; // "Õ" CHR(229) 20
Chr(245),; // "õ" CHR(228) 21
Chr(228),; // "ä" CHR(181) 22
Chr(212),; // "Ô" CHR(226) 23
Chr(244),; // "ô" CHR(147) 24
Chr(218),; // "Ú" CHR(233) 25
Chr(250),; // "ú" CHR(163) 26
Chr(220),; // "Ü" CHR(154) 27
Chr(252),; // "ü" CHR(129) 28
Chr(231),; // "ç" CHR(135) 29
Chr(233),; // "é" CHR(130) 30
Chr(209),; // "Ñ" CHR(165) 31
Chr(241),; // "ñ" CHR(164) 32
Chr(170),; // "ª" CHR(166) 33
Chr(176)} // "º" CHR(167) 34
LOCAL cParte:="", cTextoAcentuado:=""
FOR F=1 TO LEN(cTexto) // Percorre letra por letra em cTexto
cParte=SUBST(cTexto,F,1) // Atribui cada letra em cParte
AA=ASCAN(aCodAntes,cParte) // Se achar cParte em aCodAntes, entao ...
IF AA>0
cParte=aCodDepois[AA] //.. substitui pela correspondente da pagina de codigo do PDF
ENDIF
cTextoAcentuado=cTextoAcentuado+cParte // Vai montando o novo texto acentuado;
NEXT
RETURN cTextoAcentuado
//=============================================================================*
//=============================================================================*
FUNCTION ARQ_TEMPORARIO() // Gera nome de arquivo temporario
//- - - - - - - - - - - -
RETURN "Y_"+ALLTRIM(RIGHT(NETNAME(),2))+ ALLTRIM( STR(INT(SECOND())) )
//=============================================================================*
//=============================================================================*
// Substitui a HPDF_Page_Rectangle() , com a vantagem de ser feito o retangulo no PDF
// de cima para baixo, ao inves do comando original que comeca de baixo para cima.
Function Insere_retangulo( cPage , nTop , nEsquerda , nBot , nDireita)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LOCAL Altura_do_Pdf := HPDF_Page_GetHeight( cPage )
LOCAL margem_esquerda := nEsquerda
LOCAL margem_inferior := Altura_do_pdf-nBot
LOCAL larg_esq_para_direita := nDireita-nEsquerda
LOCAL comp_de_baixo_para_cima := nBot-nTop
HPDF_Page_Rectangle(cPage, margem_esquerda , margem_inferior , larg_esq_para_direita , comp_de_baixo_para_cima )
return
//=============================================================================*
//=============================================================================*
// Substitui a HPDF_Page_TextOut() , com a vantagem de ser impresso o texto no PDF
// de cima para baixo, ao inves do comando original que comeca de baixo para cima.
Function Insere_Texto( cPage , nTop , nEsquerda , nBot , nDireita, cTexto )
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LOCAL Altura_do_Pdf := HPDF_Page_GetHeight( cPage )
LOCAL margem_esquerda := nEsquerda
LOCAL margem_inferior := Altura_do_pdf-nBot
LOCAL larg_esq_para_direita := nDireita-nEsquerda
LOCAL comp_de_baixo_para_cima := nBot-nTop
HPDF_Page_TextOut(cPage, margem_esquerda , margem_inferior , larg_esq_para_direita , comp_de_baixo_para_cima ,cTexto)
return
//=============================================================================*
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gerar PDF
É sério que faz isto pra acentuação?
Código: Selecionar todos
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 425) , AlturaPdf - 60 , Acentua_No_Pdf("Fatura de Loca"+CHR(135)+CHR(198)+"o No. ") +ALLTRIM(STR(PEDIDO)) ) // +"/"+YEAR(EMISSAO))
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/
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Gerar PDF
kkkkk essa parte era pra passar despercebido... é o famoso "puxadinho", já era pra ter arrumado... cada editor que eu usava gravava de uma forma o arquivo que eu perdia toda a acentuação quando esquecia de configurar, as vezes usava uma máquina, as vezes outra e qdo ía ver.. lá se foi minhas acentuações .... dai pra resolver passei a fazer assim, mas isso a mais de 10 anos e foi ficando assim, acostumei .JoséQuintas escreveu:É sério que faz isto pra acentuação?
Hoje eu acentuo direto novamente o que crio novo, o que já está criado fica como está. Mas o problema da acentuação do modo console para o MiniGui e acentuação no Pdf não tem jeito, tenho que usar o conversor ali que criei, tem aplicação em Console e aplicação em MiniGui trabalhando no mesmo banco de dados e escolho uma forma pra armazenar (pois os acentos são incompatíveis)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gerar PDF
Não deveria ter diferença entre console e GUI, mas depende da codepage.carlaoonline escreveu:Mas o problema da acentuação do modo console para o MiniGui e acentuação no Pdf não tem jeito, tenho que usar o conversor ali que criei, tem aplicação em Console e aplicação em MiniGui trabalhando no mesmo banco de dados e escolho uma forma pra armazenar (pois os acentos são incompatíveis)
Aqui uso WINANSI pra tudo.
Acaba sendo o mesmo conjunto PTBR do Windows.
Mas no banco de dados não acentuo nada, só no aplicativo mesmo, e PDFs. (e na base que alimenta o meu site).
Isso de codepage, quanto mais mexe mais fede.
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/
Gerar PDF
Testei de várias formas, mas não consigo fazer isto funcionar.
Acho que o maior problema é que estou fazendo segundo modelo do Quintas, com a PDFClass. E no teu exemplo, pelo que eu entendi, ele cria um arquivo temporário, correto? Não consegui conjugar os dois.
Acho que o maior problema é que estou fazendo segundo modelo do Quintas, com a PDFClass. E no teu exemplo, pelo que eu entendi, ele cria um arquivo temporário, correto? Não consegui conjugar os dois.
Inacio de Carvalho Neto
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Gerar PDF
Bom dia!
Baixe o exemplo Resumido de Pdf e tente novamente.
Coloque na pasta desse exemplo o SumatraPdf.exe do exemplo anterior. A linha de comando para a compilação é:
Segue também toda minha pasta Contrib.
Faz um backup da tua pasta Contrib e coloca a minha no lugar em \harbour\Contrib (depois volta a tua) Meu Harbour 3.2 esta na pasta MiniGui.
No exemplo postado eu compilo normal e funciona com esses SETs:
Não usei nesse exemplo arquivo temporário. Ele cria sempre o PDF com o mesmo nome, então se o arquivo estiver em uso ele não conseguirá criar, pois o nome é fixo.
Segue o código que está no Download:
Vamos novamente.... vai ter que funcionar...cjp escreveu:Testei de várias formas, mas não consigo fazer isto funcionar.
Baixe o exemplo Resumido de Pdf e tente novamente.
Coloque na pasta desse exemplo o SumatraPdf.exe do exemplo anterior. A linha de comando para a compilação é:
Código: Selecionar todos
Hbmk2.exe prog.prg hbct.hbc hbhpdf.hbc
Faz um backup da tua pasta Contrib e coloca a minha no lugar em \harbour\Contrib (depois volta a tua) Meu Harbour 3.2 esta na pasta MiniGui.
No exemplo postado eu compilo normal e funciona com esses SETs:
Código: Selecionar todos
LIB=C:\MiniGUI\Harbour\lib;C:\MiniGUI\Lib
INCLUDE=C:\MiniGUI\Harbour\include;C:\MiniGUI\Include
Segue o código que está no Download:
Código: Selecionar todos
// Compilar assim:
// Hbmk2.exe prog.prg hbct.hbc hbhpdf.hbc (Uso o Harbour 3.2)
//--------------------------------------------------------
Function Main()
//--------------------------------------------------------
LOCAL page, AlturaPdf, LarguraPdf, alturaImagem, LarguraImagem, def_font
LOCAL cFileToSave:="xyz_teste.PDF", cLogo:="logo_teste.jpg"
LOCAL Tela3:=SaveScreen()
LOCAL font_list := { ;
"Courier", ;//01
"Courier-Bold", ;//02
"Courier-Oblique", ;//03
"Courier-BoldOblique", ;//04
"Helvetica", ;//05
"Helvetica-Bold", ;//06
"Helvetica-Oblique", ;//07
"Helvetica-BoldOblique", ;//08
"Times-Roman", ;//09
"Times-Bold", ;//10
"Times-Italic", ;//11
"Times-BoldItalic", ;//12
"Symbol", ;//13
"ZapfDingbats" ;//14
}
Local encodings := { ; //
"StandardEncoding",; // 01
"MacRomanEncoding",; // 02
"WinAnsiEncoding", ; // 03 USO ESTA EM PDF, a mesma que o Quintas usa
"ISO8859-2", ; // 04
"ISO8859-3", ; // 05
"ISO8859-4", ; // 06
"ISO8859-5", ; // 07
"ISO8859-9", ; // 08
"ISO8859-10", ; // 09
"ISO8859-13", ; // 10
"ISO8859-14", ; // 11
"ISO8859-15", ; // 12
"ISO8859-16", ; // 13
"CP1250", ; // 14
"CP1251", ; // 15
"CP1252", ; // 16
"CP1254", ; // 17
"CP1257"}
pdf := HPDF_New()
IF pdf == NIL
Alert( "Não foi possível criar o arquivo PDF!" )
RETURN NIL
ENDIF
/* Determina o mode de compressão */
HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL )
page := HPDF_AddPage( pdf )
HPDF_Page_SetHeight(page, 841)
HPDF_Page_SetWidth(page, 595)
AlturaPdf := HPDF_Page_GetHeight( page ) // 841 Sao os DEFAULT, pode mudar acima
LarguraPdf := HPDF_Page_GetWidth( page ) // 595 Sao os DEFAULT, pode mudar acima
HPDF_Page_SetLineWidth( page, 1 ) // Espessura dos traços
// Insere_Retangulo( page, nTop, nEsquerda, nBotton, nDireita )
Insere_retangulo( page , 20 , 10 , 820, 585) // Quadro externo maior
Insere_retangulo( page , 100 , 340 , 180, 580) // Quadro Cnpj/Emissao
Insere_retangulo( page , 140 , 340 , 140, 580) //Separador horizontal do Quadro Cnpj
// Obrigado a colocar APOS CONFECIONAR GRAFICOS
HPDF_Page_Stroke( page ) // Salva um PATH (caminho)
// Logotipo - MELHOR COM 360 X 122 PIXEL
image1 = HPDF_LoadJPEGImageFromFile(pdf, cLogo)
LarguraImagem := int ( HPDF_Image_GetWidth(image1) *.4)
AlturaImagem := int ( HPDF_Image_GetHeight(image1) *.4 )
ImagemX := 30
ImagemY := HPDF_Page_GetHeight(page) - 30 - AlturaImagem
HPDF_Page_DrawImage(page, image1, ImagemX, ImagemY, LarguraImagem, AlturaImagem)
//----- BEGIN TEXT -----------------------------------------
HPDF_Page_BeginText( page )
// Mini cabecalhos dos quadros
def_font := HPDF_GetFont( pdf, font_list[05], "WinAnsiEncoding" )
HPDF_Page_SetFontAndSize( page, def_font, 06 ) // Se colocar a fonte em forma de vetor da erro, entao atribui a variavel def_font.
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 350) , AlturaPdf - 110 , "CNPJ")
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 350) , AlturaPdf - 150 , "Inscricao Estadual")
HPDF_Page_SetFontAndSize( page, def_font, 08 ) // Nao pode colocar vetor na fonte, senao ocorre erro 'parou de funcionar'
// Para mudar a cor da fonte/linha
// HPDF_Page_SetRGBFill( page , Red , Green , Blue )
HPDF_Page_SetRGBFill( page, 1.0, 0.0, 0.0 ) // <- vermelho
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 425) , AlturaPdf - 60 , "Fatura de Locacao No. 12345")
HPDF_Page_SetRGBFill( page, 1.0, 1.0, 0.0 ) // <- Amarelo
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 355) , AlturaPdf - 130 , "01.012.034/0001/12" )
HPDF_Page_SetRGBFill( page, 0.0, 1.0, 1.0 ) // <- Ciano
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 360) , AlturaPdf - 170 , "Isento")
// Dados do emissor da nota (nossos dados)
HPDF_Page_SetRGBFill( page, 0.0, 0.0, 1.0 ) // <- Azul
HPDF_Page_TextOut( page, LarguraPdf- (LarguraPdf - 25) , AlturaPdf - 105 , "Google Apple Microsoft & Tesla Group" )
HPDF_Page_TextOut( page, LarguraPdf- ( LarguraPdf - 25) , AlturaPdf - 120 , "Tesla Road")
//----- END TEXT ------------------------------------------------
IF HPDF_SaveToFile( pdf, cFileToSave ) != 0 // _PDF
? "0x" + hb_NumToHex( HPDF_GetError( pdf ), 4 ), hb_HPDF_GetErrorString( HPDF_GetError( pdf ) ), HPDF_GetErrorDetail( pdf )
ENDIF
HPDF_Free( pdf ) // _PDF
IF hb_FileExists( cFileToSave )
BB = "START sumatraPDF.EXE "+cFileToSave
HB_RUN( BB )
HB_Alert(cFileToSave+" Aberto em anexo!")
ELSE
HB_Alert(cFileToSave+" nao encontrado!")
ENDIF
RETURN
//--------------------------------------------------------
//=============================================================================*
// Substitui a HPDF_Page_Rectangle() , com a vantagem de ser feito o retangulo no PDF
// de cima para baixo, ao inves do comando original que comeca de baixo para cima.
Function Insere_retangulo( cPage , nTop , nEsquerda , nBot , nDireita)
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LOCAL Altura_do_Pdf := HPDF_Page_GetHeight( cPage )
LOCAL margem_esquerda := nEsquerda
LOCAL margem_inferior := Altura_do_pdf-nBot
LOCAL larg_esq_para_direita := nDireita-nEsquerda
LOCAL comp_de_baixo_para_cima := nBot-nTop
HPDF_Page_Rectangle(cPage, margem_esquerda , margem_inferior , larg_esq_para_direita , comp_de_baixo_para_cima )
return
//=============================================================================*
Gerar PDF
Desculpe, mas só agora vi tua mensagem. Vou testar.
Mas antes, estou precisando de algo mais urgente: como faço para colocar textos em negrito e textos sublinhados no pdf? Estou usando a classe PDF do Quintas.
Mas antes, estou precisando de algo mais urgente: como faço para colocar textos em negrito e textos sublinhados no pdf? Estou usando a classe PDF do Quintas.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gerar PDF
Não lembro quanto ao sublinhado...cjp escreveu:Mas antes, estou precisando de algo mais urgente: como faço para colocar textos em negrito e textos sublinhados no pdf? Estou usando a classe PDF do Quintas.
Mas negrito... é fonte. negrito=bold
Por exemplo, existem os fontes:
Arial
Arial Bold
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/
Gerar PDF
Obrigado.
Mas agora estou tendo um outro problema: está dando arquivo arquivo não encontrado (veja imagem anexa).
Acho estranho, porque o arquivo é pra ser criado, né?
Inclusive, em outra função igual funciona sem problema.
O que eu estou fazendo errado?
Estou postando o que interessa da função para conferência:
Mas agora estou tendo um outro problema: está dando arquivo arquivo não encontrado (veja imagem anexa).
Acho estranho, porque o arquivo é pra ser criado, né?
Inclusive, em outra função igual funciona sem problema.
O que eu estou fazendo errado?
Estou postando o que interessa da função para conferência:
Código: Selecionar todos
Function MyTempFile()
if "GABARIT"$procname(1) .or. "GABARIT"$procname(2)
Return "c:\aulas\provas\Gabarito.pdf"
elseif "LISTAENSAIO"$procname(1) .or. "LISTAENSAIO"$procname(2)
Return "c:\diversos\Ensaio.pdf"
else
Return "RelAud.pdf" // + "00000001" + ".PDF"
endif
function listaensaio
...
oPDF:=PDFClass()
oPDF:Begin()
oPDF:SetType( 2 )
oPDF:AddPage()
nMaxCol := oPDF:MaxCol()
nMaxRow := oPDF:MaxRow()
aDias:={"Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"}
oPDF:DrawText( 3, 58, ansi("Lista de ... "+dtoc(dt)+" - "+aDias[dow(dt)]), Nil, 16, "Helvetica Bold", Nil, Nil )
...
oPDF:End()
return .t.
- Anexos
-
- tela.png (9.16 KiB) Exibido 2042 vezes
Inacio de Carvalho Neto
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Gerar PDF
Bom dia!
Ao que parece o arquivo não foi criado, MAS o primeiro passo é ver na pasta em ele deveria ter sido criado e ver se ele está lá ou não. Talvez ele tenha sido criado em uma pasta e está tentando abrir ele em outra.cjp escreveu:Acho estranho, porque o arquivo é pra ser criado, né?
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gerar PDF
Vamos voltar no post anterior:cjp escreveu:Testei de várias formas, mas não consigo fazer isto funcionar.
Acho que o maior problema é que estou fazendo segundo modelo do Quintas, com a PDFClass. E no teu exemplo, pelo que eu entendi, ele cria um arquivo temporário, correto? Não consegui conjugar os dois.
Trocou o fonte e agora não tá saindocjp escreveu:Mas antes, estou precisando de algo mais urgente: como faço para colocar textos em negrito e textos sublinhados no pdf?
Conclusão óbvia: é o fonte.
Qualquer erro dentro do PDF, lá se foi o PDF inteiro embora.
Olhou a lista de fontes da harupdf ou apenas chutou qualquer nome ?
https://libharu.sourceforge.net/fonts.html
Então.... esse outro fonte também tem uma lista de fontes válidos.cjp escreveu:Testei de várias formas, mas não consigo fazer isto funcionar.
Acho que o maior problema é que estou fazendo segundo modelo do Quintas, com a PDFClass. E no teu exemplo, pelo que eu entendi, ele cria um arquivo temporário, correto? Não consegui conjugar os dois.
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/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Gerar PDF
Conforme post do José, e segundo seu exemplo, o nome da fonte está errado. Não é "Helvetica Bold", tem que ser "Helvetica-Bold". Faltou o hífen.
Completando: Tenha em mente sempre que nomes de fontes na Haru PDF nunca têm espaços neles.
Completando: Tenha em mente sempre que nomes de fontes na Haru PDF nunca têm espaços neles.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Gerar PDF
Realmente o erro estava no "Helvetica Bold", sem o hífen. Coloquei o hífen e resolveu.
Obrigado a todos.
Obrigado a todos.
Inacio de Carvalho Neto
