Rtf to Pdf poca calidad y descuadrado

Rtf to Pdf poca calidad y descuadrado

Postby Ramón J. » Mon Jan 04, 2021 10:31 am

Hola a todos

He incluido una rutina que he visto en el foro para convertir en pdf archivos rtf utilizando la clase richEdi5. En este caso tiene un logo en color, el nombre de la empresa y la dirección, pero he observado que en el pdf generado el logo sale pixelado y en general sale todo desplazado hacia la derecha y hacia abajo. ¿Hay que hacer algún ajuste más?

Aquí os dejo el en lace descarga del zip que contiene el prg, el archivo rtf de ejemplo y el pdf generado.

https://mega.nz/file/hso1XYBD#hxys4DT-j ... 2jnB0rZjXA

Un saludo
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Postby karinha » Mon Jan 04, 2021 1:07 pm

Intenta asi:

Code: Select all  Expand view  RUN

#include "fivewin.ch"
#include "Constant.ch"
#include "RichEdit.ch"

//-----------INFORME A PDF---------------------

FUNCTION infotopdf()

   LOCAL oBar, oWnd
   LOCAL cRtf, cPdf, lOpen, cFile
   LOCAL hDLL := LoadLibrary( "Riched20.dll" )

   cFile := "modelo.RTF"

   cRtf := cfile

   DEFINE WINDOW oWnd TITLE "RTF to PDF" MDI

   DEFINE BUTTONBAR oBar OF oWnd SIZE 100, 32 2010

   DEFINE BUTTON OF oBar PROMPT "Generar PDF" ;
      ACTION RTFTOPDF( cRtf, cPdf, lOpen  )

   oWnd:oWndClient:bPainted := ;
      { || oWnd:oWndClient:DrawImage( "c:\fwh\bitmaps\fivetech.bmp", ;
           { NIL, NIL, -10, -10 }, .f., nil, nil, nil, "BR" ) }

   ACTIVATE WINDOW oWnd CENTERED

   FreeLibrary( hDLL )

RETURN nil

FUNCTION RTFTOPDF( cRTF, cPDF, lOpen )

   LOCAL oWnd, oRtf, cTxt := ""

   IF Empty( cRtf ) .OR. .NOT. File( cRTF ) .OR. ;
      Lower( cFileExt( cRtf ) ) != "rtf"

      MsgInfo( "No localizo el .RTF", "Atencion" )

      RETURN( .F. )

   ENDIF
   
   DEFAULT cPDF := cRTF, lOpen := .T.

   cPDF  := cFileSetExt( cPDF, "pdf" )

   FErase( cPDF )

   DEFINE WINDOW oWnd

   @ 0, 0 RICHEDIT oRtf VAR cTxt OF oWnd FILE cRTF

   oWnd:oClient := oRtf

   ACTIVATE WINDOW oWnd HIDDEN ON INIT ;
      ( oRtf:SaveToPDF( cFileNoExt( cPdf ), cPDF, lOpen ), oWnd:End() )

RETURN File( cPDF )
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Rtf to Pdf poca calidad y descuadrado

Postby Ramón J. » Mon Jan 04, 2021 6:20 pm

Gracias, João, por contestar

He probado lo que me has indicado y el resultado es el siguiente:

El archivo rtf;
Image

El archivo pdf:
Image

Como aclaración decirte que la plantilla rtf la he creado con LibreOffice, que no sé si tendrá algo que ver, pero como podrás observar en el pdf no aparece el encabezado que está formado por una tabla con tres columnas, y además el texto, que es arial, no es fiel al original.

No sé qué puede ser. Tengo Windows 10 y FWH18.04

Un saludo
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Postby cnavarro » Mon Jan 04, 2021 6:41 pm

Por favor, indícame en la imagen que adjunto qué es a lo que te refieres.
Image
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Rtf to Pdf poca calidad y descuadrado

Postby Ramón J. » Mon Jan 04, 2021 7:52 pm

Hola, CNavarro.

A ti te ha salido bien le pdf. Como le comentaba a João y como podrás observas en las imágenes que arriba he insertado, el pdf que me genera del rtf que tomo como base no parece en nada . ¿Has insertado alguna rutina especial en el código de João? De todas maneras, en la imagen que me adjuntas el encabezado sale desplazado un poco hacia abajo, añade más margen en la derecha y el párrafo tiene más líneas.

Image

La imagen de la izquierda es el pdf que has adjuntado y el de la derecha el la previsualización con el LIbreOffice.

Por cierto -este ya es otro tema-, no he podido compilar testrtf5 que se encuentra en samples ya que Fivedit me arroja el siguiente error:

Image
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Postby cnavarro » Mon Jan 04, 2021 9:40 pm

Ramón, para que pueda linkar correctamente ( es un problema de versiones ), pon esto al final del prg
Code: Select all  Expand view  RUN

FUNCTION OleUIInsertObject()

RETURN NIL
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Rtf to Pdf poca calidad y descuadrado

Postby Ramón J. » Wed Jan 06, 2021 11:05 am

Muchas gracias, C. Navarro. Intentaré buscar otras alternativas. Abriré otro tema, porque la creación de pdf desde rtf me lleva de cabeza.
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Postby cnavarro » Wed Jan 06, 2021 1:18 pm

Creo que el problema es:
1.- Qué aplicación genera el RTF
2.- Versión de Fw que utilizas
Esta apreciación es por lo que yo obtengo al generar el PDF con la versión actual de Fw
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Rtf to Pdf poca calidad y descuadrado

Postby Ramón J. » Wed Jan 06, 2021 8:11 pm

Hola, C. Navarro.

Uso FWH FWH18.04 y Windows 10.

El RTF lo genera el propio FWH. El procedimiento es el siguiente:

Creo un plantilla con LibreOffice en la que únicamente aparece el logotipo, la dirección y poco más y la guardo en formato RTF. A partir de ahí se empieza a introducir texto en el propio archivo RTF creado y se guarda. Básicamente el procedimiento es el siguiente:

Code: Select all  Expand view  RUN
Function creainforme(nRecnoDoc, cnumero, cnombre, obrwregdoc)

local ctextbase, cplantilla, ctxtfile, cbase
Local cRaiz:="\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL"
Local cnum, cnom, CarpetaSAT, nlibro, libro, fecha, dfecha,clasedoc,cClasedoc
Local aFiles, aDir, apunte
Local cFolder
local cFile:=strzero(nRecnoDoc,8)+".RTF"
local cFichero:="\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+strzero(nRecnoDoc,8)+".RTF"

 
nlibro   = REG->NUM_LIB
dFecha   = REG->FECHA
clasedoc  =REG->CLASE_DOC

cNum:=Cnumero
cNom:=cnombre
CarpetaSAT:=alltrim(cnum)+"
-"+alltrim(cnom)
libro:=strzero(nlibro,6)
fecha:=strzero(day(dfecha),2)+strzero(month(dfecha),2)+str(year(dfecha),4)
apunte:=libro+"
-"+fecha+"-"+alltrim(clasedoc)
cFolder:=cRaiz+"
\"+CarpetaSAT+"\"+Libro+"\"+fecha+"\"+Clasedoc+"\"

IF FILE("
\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+strzero(nRecnoDoc,8)+".RTF") .AND. FILE("\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+cfichero)
MsgAlert("
Ya existe el fichero."+CRLF+;
"
Puede modificarlo en edición", "Archivo ya existe")
endif

ctextbase:= MEMOREAD("
\COMPARTIDO\REGSAT\WINSAT\plantillas\informe.rtf")   //ESTA ES LA PLANTILLA RTF                   
 
IF !FILE("
\COMPARTIDO\REGSAT\WINSAT\plantillas\informe.rtf")
MsgStop("
El archivo base no existe","Error")
RETURN nil
ENDIF

cFichero:=strzero(nRecnoDoc,8)+"
.RTF"

memoread("
\COMPARTIDO\REGSAT\WINSAT\plantillas\informe.rtf")

cTxtFile:=MemoRead("
\COMPARTIDO\REGSAT\WINSAT\plantillas\informe.rtf")

memowrit("
\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+cfichero, cTxtFile,.f.  )
memowrit("
\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL\"+CarpetaSAT+"\"+"DIARIO"+"\"+apunte+"\"+"i"+cfichero, cTxtFile,.f.  )

if reg->(flock())
reg->fecha_ni:=date()
reg->fileint:=Cfichero
reg->(dbunlock())
oBrwregdoc:refresh()
endif
 
Msginfo("
Se ha creado fichero "+cfichero)
obrwregdoc:refresh()

//opendoc(nRecnoDoc, cFichero, oBrwregdoc)
RETURN nil



Como verás lo que hago es que ,tomando como plantilla un documento RTF en blanco (únicamente con el logotipo y la dirección), creo el RTF renombrándolo con el numero del recno() en la subcarpeta de la empresa que también se crea, lo abro, se introduce el texto y se guarda. Ni siguiera utilizo campos MEMO porque muchas veces el texto es muy extenso y además incluye tablas. Además, no tengo confianza con los campos MEMO para estos casos.

Luego con la siguiente función creo los PDF, pero el resultado no es un reflejo muy fiel al fichero RTF creado:

Code: Select all  Expand view  RUN
Function infotopdf (nRecnoDoc, cnumero, cnombre, obrwregdoc)

local oWnd, oBar                                                                          
local cRtf, cPdf, lOpen, cFile
local cFichero, ctextbase, cplantilla, ctxtfile, cbase
Local cRaiz:="\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL"
Local cnum, cnom, CarpetaSAT, nlibro, libro, fecha, dfecha,clasedoc,cClasedoc
Local aFiles, aDir
Local cFolder, apunte
LOCAL hDLL := LoadLibrary( "Riched20.dll" )

cFile:=strzero(nRecnoDoc,8)+".RTF"
cFichero:="\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+strzero(nRecnoDoc,8)+".RTF"  
 

IF !FILE("
\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+strzero(nRecnoDoc,8)+".RTF")
//MsgNoYes( "
El archivo existe. Se va a eliminar el existente y crear uno nuevo. ¿Desea continuar?","Aviso")
MsgAlert("
No existe el fichero"+cfichero)
return .f.
endif

nlibro     = REG->NUM_LIB
dFecha   = REG->FECHA
clasedoc  =REG->CLASE_DOC

cNum:=Cnumero
cNom:=cnombre
CarpetaSAT:=alltrim(cnum)+"
-"+alltrim(cnom)
libro:=strzero(nlibro,6)
fecha:=strzero(day(dfecha),2)+strzero(month(dfecha),2)+str(year(dfecha),4)
apunte:=libro+"
-"+fecha+"-"+alltrim(clasedoc)
cFolder:=cRaiz+"
\"+CarpetaSAT+"\"+Libro+"\"+fecha+"\"+Clasedoc+"\"+cfile
cRtf:="
\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL\"+CarpetaSAT+"\"+"DIARIO"+"\"+apunte+"\"+"i"+cfile
 

  DEFINE WINDOW oWnd TITLE "
PDF"
   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2010
   DEFINE BUTTON OF oBar PROMPT "
Generar PDF" ;
      ACTION RTFTOPDF(cRtf, cPdf, lOpen  )
   ACTIVATE WINDOW oWnd CENTERED


return nil
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Postby karinha » Thu Jan 07, 2021 12:48 am

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 58 guests