Page 2 of 2
Re: PRINT TO PDF
Posted: Tue Feb 23, 2021 11:35 am
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
Re: PRINT TO PDF
Posted: Tue Feb 23, 2021 3:30 pm
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

Re: PRINT TO PDF
Posted: Wed Feb 24, 2021 3:08 pm
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
Mustafa
Re: PRINT TO PDF
Posted: Sat Dec 04, 2021 8:56 pm
by majkll_ns
I finaly find a way to use special characters in any font for HPDFPRINT:
#include "hmg.ch"
#include "hmg_hpdf.ch"
Function Main()
SELECT HPDFDOC "sample.pdf" PAPERLENGTH 270 PAPERWIDTH 210 LOG
START HPDFDOC
START HPDFPAGE
SET HPDFDOC ENCODING TO "CP1250"
// serbian characters
S= chr(138) + chr(0x9a)+' '
S= S+chr(0x8e) + chr(0x9e)+' '
S= S+chr(0xc8) + chr(0xe8)+' '
S= S+chr(0xc6) + chr(0xe6)+' '
S= S+chr(0xd0) + chr(0xf0)
@ 10,20 HPDFPRINT S FONT "Arial" SIZE 10
// use any installed font from c:\windows\font : use ttf_file_name
// Arial Narrow in arialN.ttf
@ 20,20 HPDFPRINT S FONT "ArialN.ttf" SIZE 10
// segoe script in segoesc.ttf
@ 30,20 HPDFPRINT S FONT "segoesc.ttf" SIZE 14
END HPDFPAGE
END HPDFDOC
Execute File 'sample.pdf'
Return Nil