Gerar PDF

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Gerar PDF

Mensagem por cjp »

Entendo.
Independentemente do contrib, vc poderia me dizer como fazer para colocar imagens e cores nas letras?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar PDF

Mensagem por JoséQuintas »

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.
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/
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Gerar PDF

Mensagem por carlaoonline »

Bom dia!
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)
hbhpdf.zip
Colocar dentro da pasta Contrib do Harbour
(1.02 MiB) Baixado 131 vezes
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.
Teste_pdf.zip
Exemplo de duplicata em PDF
(4.12 MiB) Baixado 169 vezes
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
//=============================================================================*


Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar PDF

Mensagem por JoséQuintas »

É 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/
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Gerar PDF

Mensagem por carlaoonline »

JoséQuintas escreveu:É sério que faz isto pra acentuação?
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 .

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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar PDF

Mensagem por JoséQuintas »

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)
Não deveria ter diferença entre console e GUI, mas depende da codepage.
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Gerar PDF

Mensagem por cjp »

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.
Inacio de Carvalho Neto
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Gerar PDF

Mensagem por carlaoonline »

Bom dia!
cjp escreveu:Testei de várias formas, mas não consigo fazer isto funcionar.
Vamos novamente.... vai ter que funcionar...


Baixe o exemplo Resumido de Pdf e tente novamente.

Coloque na pasta desse exemplo o SumatraPdf.exe do exemplo anterior.
Exemplo PDF Resumido.zip
Exemplo Resumido de criação simples de PDF
(463.09 KiB) Baixado 128 vezes
A linha de comando para a compilação é:

Código: Selecionar todos

Hbmk2.exe prog.prg hbct.hbc hbhpdf.hbc
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)
contrib.zip
Use essa pasta Contrib no lugar da sua para teste.
(6 MiB) Baixado 105 vezes
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
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:

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
//=============================================================================*



cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Gerar PDF

Mensagem por cjp »

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.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar PDF

Mensagem por JoséQuintas »

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.
Não lembro quanto ao sublinhado...
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/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Gerar PDF

Mensagem por cjp »

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:

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
tela.png (9.16 KiB) Exibido 2047 vezes
Inacio de Carvalho Neto
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Gerar PDF

Mensagem por carlaoonline »

Bom dia!
cjp escreveu:Acho estranho, porque o arquivo é pra ser criado, né?
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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerar PDF

Mensagem por JoséQuintas »

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.
Vamos voltar no post anterior:
cjp escreveu:Mas antes, estou precisando de algo mais urgente: como faço para colocar textos em negrito e textos sublinhados no pdf?
Trocou o fonte e agora não tá saindo
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
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.
Então.... esse outro fonte também tem uma lista de fontes válidos.
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/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Gerar PDF

Mensagem por Jairo Maia »

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.
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Gerar PDF

Mensagem por cjp »

Realmente o erro estava no "Helvetica Bold", sem o hífen. Coloquei o hífen e resolveu.
Obrigado a todos.
Inacio de Carvalho Neto
Responder