Rtf to Pdf poca calidad y descuadrado

Post Reply
Ramón J.
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Rtf to Pdf poca calidad y descuadrado

Post by Ramón J. »

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
User avatar
karinha
Posts: 7993
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 6 times
Contact:

Re: Rtf to Pdf poca calidad y descuadrado

Post by karinha »

Intenta asi:

Code: Select all | Expand

#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 nilFUNCTION 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
Ramón J.
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Post by Ramón J. »

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
User avatar
cnavarro
Posts: 6608
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Has thanked: 6 times
Been thanked: 8 times

Re: Rtf to Pdf poca calidad y descuadrado

Post by cnavarro »

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
Ramón J.
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Post by Ramón J. »

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
User avatar
cnavarro
Posts: 6608
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Has thanked: 6 times
Been thanked: 8 times

Re: Rtf to Pdf poca calidad y descuadrado

Post by cnavarro »

Ramón, para que pueda linkar correctamente ( es un problema de versiones ), pon esto al final del prg

Code: Select all | Expand

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
Ramón J.
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Post by Ramón J. »

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
User avatar
cnavarro
Posts: 6608
Joined: Wed Feb 15, 2012 8:25 pm
Location: España
Has thanked: 6 times
Been thanked: 8 times

Re: Rtf to Pdf poca calidad y descuadrado

Post by cnavarro »

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
Ramón J.
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Rtf to Pdf poca calidad y descuadrado

Post by Ramón J. »

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

Function creainforme(nRecnoDoc, cnumero, cnombre, obrwregdoc) local ctextbase, cplantilla, ctxtfile, cbaseLocal cRaiz:="\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL"Local cnum, cnom, CarpetaSAT, nlibro, libro, fecha, dfecha,clasedoc,cClasedocLocal aFiles, aDir, apunteLocal cFolder local cFile:=strzero(nRecnoDoc,8)+".RTF"local cFichero:="\COMPARTIDO\REGSAT\WINSAT\RTFINT\"+strzero(nRecnoDoc,8)+".RTF" nlibro   = REG->NUM_LIBdFecha   = REG->FECHAclasedoc  =REG->CLASE_DOCcNum:=CnumerocNom:=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")endifctextbase:= 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 ENDIFcFichero:=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:=Cficheroreg->(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

Function infotopdf (nRecnoDoc, cnumero, cnombre, obrwregdoc)local oWnd, oBar                                                                           local cRtf, cPdf, lOpen, cFilelocal cFichero, ctextbase, cplantilla, ctxtfile, cbaseLocal cRaiz:="\COMPARTIDO\REGSAT\WINSAT\DOCUMENTAL"Local cnum, cnom, CarpetaSAT, nlibro, libro, fecha, dfecha,clasedoc,cClasedocLocal aFiles, aDirLocal 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.endifnlibro     = REG->NUM_LIBdFecha   = REG->FECHAclasedoc  =REG->CLASE_DOCcNum:=CnumerocNom:=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+"\"+cfilecRtf:="\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 CENTEREDreturn nil
FWH 20.12 BCC7
User avatar
karinha
Posts: 7993
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 6 times
Contact:

Re: Rtf to Pdf poca calidad y descuadrado

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Post Reply