PRINT TO PDF

HMG en Español

Moderator: Rathinagiri

User avatar
mustafa
Posts: 1069
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Has thanked: 12 times
Been thanked: 275 times
Contact:

Re: PRINT TO PDF

Post by mustafa »

Yepp Amigaxu !

Me está pasando lo mismo con los acentos
y desplazamiento de encabezado

En el Pantallazo con fichero del código fuente
construido con el Bloc de Notas de Windows
1.- está salvado como ANSI y la
2.- está código fuente salvado
como UTF-8 y está fallando ?

Saludos/Regards
Mustafa
Attachments
Pantallazo.jpg
Pantallazo.jpg (207.69 KiB) Viewed 369 times

User avatar
SALINETAS24
Posts: 566
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 76 times
Been thanked: 106 times
Contact:

Post by SALINETAS24 »

mustafa wrote:
Tue Feb 23, 2021 11:35 am
Yepp Amigaxu !

Me está pasando lo mismo con los acentos
y desplazamiento de encabezado

En el Pantallazo con fichero del código fuente
construido con el Bloc de Notas de Windows
1.- está salvado como ANSI y la
2.- está código fuente salvado
como UTF-8 y está fallando ?

Saludos/Regards
Mustafa

Yeeep..., que diu el home.....???

La solución de EDK va perfecta, pero solo la tienes que aplicar a los campos que no provienen de una DBF, osease a las etiquetas o a variables introducidas por el teclado,a campos del GRID.., etc., ponerlo en aquellos campos "manuales" que pueden ser susceptibles de llevar un carácter especial. Si lo pones en todos no pasa nada, pero te ahorras codigo. ;)
Una vez solucionado desaparecerán los desplazamientos esos raros que tienes.

Te paso un trozo de como lo he implementado

Code: Select all

// -----------------------------------------------------------------------
// Imprimir parte de Trabajo
// Selecciona el formato se salida, recibe opcion elegida
// Valor  1 - Prepara la impresión con previsualización
// Valor  2 - Crea un Pdf para su envio por email
// -----------------------------------------------------------------------
STATIC PROC _ImpParte(nOpc)
LOCAL lSuccess
LOCAL cFile:="PRUEBA.PDF"

    IF nOpc=1    // Imprime
		SELECT PRINTER DIALOG TO lSuccess PREVIEW	
		IF lSuccess == .T.
			START PRINTDOC
				START PRINTPAGE
				_PrintParte(1)
				END PRINTPAGE
			END PRINTDOC	
		ENDIF
	ELSE        // Crea fichero PDF
		IF FILE(cFile)
			FERASE(cFile)
		ENDIF
		SELECT PRINTER PDF cFile TO lSuccess
	   	IF lSuccess == .T.
	   	
	   	    // --> Estas 2 líneas son la que indico EDK no tengo claro lo que hacen pero funcionan
		    HB_SETCODEPAGE("ESWIN")                               
		    SET HPDFDOC ENCODING TO "CP1252"
		     	
			START PRINTDOC
				START PRINTPAGE
				_PrintParte(2)
				END PRINTPAGE
			END PRINTDOC	
			_Email(_EmailcDe,Clientes->EMAIL,_EmailnServ,_EmailnClave,,{cFile})
		    EXECUTE FILE 'SumatraPDF.exe' PARAMETERS +cFile
		    // Esta linea también lo dijo EDK.... su palabra es ley  :lol: 
		    HB_SETCODEPAGE("UTF8")
		ENDIF
    ENDIF

RETURN
// ---------------------------------------------------------
// Impresion del Parte - Definición del Formato
STATIC PROC _PrintParte(nOpc)
   
   
   	// como son datos leidos del fichero no hace falta nada... salen bien
   	@ 46,30 PRINT MisDatos->DIRECCION  FONT "Calibri" SIZE 8
	@ 49,30 PRINT MisDatos->POBLACION  FONT "Calibri" SIZE 8
	@ 52,30 PRINT MisDatos->PROVINCIA  FONT "Calibri" SIZE 8
	
         // Ahora como son cadenas o variables tengo que aplicar hb_UTF8TOSTR()
	@ 081,122 PRINT hb_UTF8TOSTR("ARTÍCULO")   FONT "Consolas" SIZE 10 BOLD  
	@ 085,122 PRINT hb_UTF8TOSTR("Código : ") +Win_MaRe.Apa_01a.VALUE FONT "Courier New" SIZE 8 
	@ 088,122 PRINT hb_UTF8TOSTR(Win_MaRe.Apa_01b.VALUE) FONT "Courier New" SIZE 8
	// Aqui no lo pongo a la cadena "Refer. :" no lleva nada y lo pongo a la variable por si acaso 
	@ 091,122 PRINT "Refer. : " +hb_UTF8TOSTR(Win_MaRe.Apa_02a.VALUE) FONT "Courier New" SIZE 8
	
RETURN


Ale mensieur.., ponlo en marcha y ya me dices.., que tenemos esa cervecita pendiente 8-)
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:

User avatar
mustafa
Posts: 1069
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Has thanked: 12 times
Been thanked: 275 times
Contact:

Post by mustafa »

Hola amigos:
Está funcionando con la aportación
de Edward (edk) y SALINETAS24

mi código es con HPDFPRINT no con PRINT y
está funcionando con el código que indicáis
código fuente salvado como UTF-8

con HB_UTF8TOSTR()
pero también con HB_UCHAR()

HB_UCHAR(225) <= á
HB_UCHAR(233) <= é
HB_UCHAR(237) <= í
HB_UCHAR(243) <= ó
HB_UCHAR(250) <= ú
HB_UCHAR(209) <= Ñ
HB_UCHAR(241) <= n
HB_UCHAR(08364) <= €

Code: Select all

*----------------------------------------*
Function MAIN  
*----------------------------------------*

   REQUEST DBFCDX , DBFFPT , DBFDBT
   RDDSETDEFAULT( "DBFCDX" )

   REQUEST HB_CODEPAGE_ESWIN     
   HB_SETCODEPAGE("ESWIN")    
 
   REQUEST HB_LANG_ES   
   HB_LANGSELECT("ES")  
*---------------------------------------* 
  SET LANGUAGE TO SPANISH
  SET CODEPAGE TO UNICODE
  
  SET CENTURY ON
  SET DATE FRENCH
  SET ESCAPE ON
  SET NAVIGATION EXTENDED
  SET DELETED ON
  SET DATE FORMAT TO 'dd/mm/yyyy'
etc ...

   REQUEST HB_CODEPAGE_ESWIN       // <===  Muy importante 
   HB_SETCODEPAGE("ESWIN")            // <===  Muy importante 
 
  SET HPDFDOC ENCODING TO "CP1252"  
*-------------------------------------------------------------------------------------------------------*
   START HPDFDOC
           START HPDFPAGE		
            pagina:=1 

     @ 066,020 HPDFPRINT HB_UTF8TOSTR("Código Cliente:")     + SPACE(13)+ ALLTRIM(STR(Numero)) FONT "Times-Roman" SIZE 12  
     @ 066,020 HPDFPRINT "C"+ HB_UCHAR(243) +"digo Cliente:" + SPACE(13)+ ALLTRIM(STR(Numero)) FONT "Times-Roman" SIZE 12  

etc.. 
Saludos/Regads/Salam :lol:

Mustafa

Post Reply