ExecuteReport( )

General Help regarding HMG, Compilation, Linking, Samples

Moderator: Rathinagiri

User avatar
srvet_claudio
Posts: 2223
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: HMG Report Writer

Post by srvet_claudio »

Pablo César wrote:Hola Andrés, gracias por resaltar el problema con colores y por disponibilizar el código para testes.

Te refieres a HMG Report Writer y no me respondiste:
Pablo César wrote:
Si yo genero el .PDF con ExecuteReport( 'Ctes2', .t., .t., cRaiz + "Clientes.pdf" ), no aparecen los acentos
Have you tried with START HPDFPAGE ?
See UNICODE demo at C:\hmg.3.4.0\SAMPLES\HPDF\HMG_HPDFUNI
Porque me está pareciendo que HMG Report Writer trabaja solo en ANSI y debe ser eso una de las causa que supuestamente no encuentra el archivo de imagen.
Si compilas en 3.0.46 (en ANSI) por ejemplo, irás ver que el archivo del imagen parece en el relatorio.

Creo que esto se podria resolver si mantuviéramos el código de la funcion pdfJPEGInfo original. Pues en esta función, se está tratando contenido del string en bajo nível (FOPEN) como si fuera UTF y sabemos que no lo es. Esto lo tendria que revisar Claudio, caso quieran mantener retro-compatibilidad con hbvpdf.
Yo ya probé substituyendo la funcion por la antigua y funciona:

Code: Select all

function pdfJPEGInfo( cFile )
local c255, nAt, nHandle
local nWidth, nHeight, nBits := 8, nFrom := 0, nLength, xRes, yRes, aTemp := {}
local nBuffer := 20000
local nSpace  // := 3 // 3 - RGB, 1 - GREY, 4 - CMYK

   nHandle := fopen( cFile )

   c255 := space( nBuffer )
   fread( nHandle, @c255, nBuffer )

   xRes := asc(substr( c255, 15, 1 )) * 256 + asc(substr( c255, 16, 1 ))
   yRes := asc( substr( c255, 17, 1 )) * 256 + asc(substr( c255, 18, 1 ))

   nAt := rat( chr(255) + chr(192), c255 ) + 5
   nHeight := asc(substr( c255, nAt, 1 )) * 256 + asc(substr( c255, nAt + 1, 1 ))
   nWidth := asc( substr( c255, nAt + 2, 1 )) * 256 + asc(substr( c255, nAt + 3, 1 ))

   nSpace := asc( substr( c255, nAt + 4, 1 ))

   nLength := filesize( nHandle )

   fclose( nHandle )

   aadd( aTemp, nWidth )
   aadd( aTemp, nHeight )
   aadd( aTemp, xRes )
   aadd( aTemp, yRes )
   aadd( aTemp, nBits )
   aadd( aTemp, nFrom )
   aadd( aTemp, nLength )
   aadd( aTemp, nSpace )

return aTemp
Creo tambien que se aplica a la funcion pdfTIFFInfo que debe ser normalizada para ANSI en low level.
Pablo César wrote:
Andrés wrote:En determinado caso, cómo añadirle el "NOSAVEBUTTON" al El ExecuteReport() ?
I do not test it, but have you tried this ?

_HMG_SYSDATA [ 505 ] := .T.
No entiendo para que quieres desabilitar el botón de nuestro Preview, si lo abres con Adobe.
Por alguna razón se están eliminando las diagonales del path del archivo .jpg
Porqué dicés esto ? Te baseas en qué ?

Porque por lo que yo entiendo, el problema tu enfatizas en amarillo con respecto al nombre y path del archivo, son dos motivos:

1. La que yo mencioné sobre leer erroneamente en bajo nivel como UTF para casos de las propiedades en archivos de imagenes.
2. La string, no sé por qué motivo los "\" están siendo removidos (tanto en ANSI como en UNICODE). :(
Voy a chequearlo.
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

ExecuteReport( )

Post by Pablo César »

Hi Andrés,

For me there is not problem at all !!

Here it's working perfectly all your demands is making right job.
Screen1.png
Screen1.png (138.63 KiB) Viewed 3620 times
I've compiled with 3.4.0 UNICODE mode.

What's your version are using for ?
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: ExecuteReport( )

Post by andyglezl »

Igual, con la 3.4 unicode
voy a tener que revisar por otro lado, ya desinstale e instalé de nuevo
el Acrobat Reader ( Version XI ) y sigue igual, quizá instalando una version
anterior funcione....Gracias
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

ExecuteReport( )

Post by Pablo César »

Andrés, no sé todavia cual es tu dificultad.
Por tus mensajes expresás que no está generando el archivo pdf y para mi, no tiene nada que ver con Acrobat.
El acrobat, está paraa visualizar, nada más. Lo que puede estar pasando es que tu estás dejando abierto (en el Acrobat) el archivo pdf y cuando solicitas para generarlo de vuelta, obviamente no lo está podiendo hacer porque stá abierto.

Cual es tu directório (folder/carpeta) en eque está siendo ejecutada tu aplicación ?
Ya hé visto que por motivos de acceso restricto, no se puede crear archivos en ciertas carpetas de trabajo.

Si encuentras el motivo, por favor dejanos al tanto asi queda registrado.

Un abrazo
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: ExecuteReport( )

Post by andyglezl »

Andrés, no sé todavia cual es tu dificultad.
1.- No poder generar el PDF en la ventana de PREVIEW, todos los demás formatos si funcionan.( jpg, png, etc.)
2.- No poder generar el PDF OK porque no imprime los acentos (que también ya solucioné con "HMG_UNICODE_TO_ANSI( NOMBRE )" ),
no imprime en la misma posición el BEGIN RECTANGLE / END RECTANGLE y sigue sin desplegar la imagen.jpg
Por tus mensajes expresás que no está generando el archivo pdf y para mi, no tiene nada que ver con Acrobat.
El archivo lo genera, pero al abrirlo con el Acrobat, no despliega nada del contenido.
El acrobat, está paraa visualizar, nada más. Lo que puede estar pasando es que tu estás dejando abierto (en el Acrobat) el archivo pdf y cuando solicitas para generarlo de vuelta, obviamente no lo está podiendo hacer porque stá abierto.
Si cierro el Acrobat
Cual es tu directório (folder/carpeta) en eque está siendo ejecutada tu aplicación ?
"D:\HMG\3.4\LOGOPSO.JPG" el sample1 y "D:\RespaldosPCs\DiscoC\Trabajo\ServSAT" el de mi aplicación
que es donde tengo todo lo que hago con HMG
Ya hé visto que por motivos de acceso restricto, no se puede crear archivos en ciertas carpetas de trabajo.
Cierto, por eso siempre trabajo en "D:\"
Si encuentras el motivo, por favor dejanos al tanto asi queda registrado.
Desde luego, cualquier resultado que tenga, lo posteo. Gracias.
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Re: ExecuteReport( )

Post by Pablo César »

Hola Andrés,
andyglezl wrote:1.- No poder generar el PDF en la ventana de PREVIEW, todos los demás formatos si funcionan.( jpg, png, etc.)
Entiendo ahora lo que te refieres, pero solo para dejar aqui en claro, lo que dicés no es totalmente correcto.
Porque lo que nuestro PREVIEW hace es apenas, repito, apenas exibir los archivos METAFILES. Eses archivos, con extension EMF. Este visualizador, no está preparado para exibir PDFs, eso porque precisaria un interpretador.
Lo que se poderia hacer, es visualizar en EMF y generar el archivo PDF. Eso poderia ser un sugerencia que puedes hacerlo en la seccion WishList.
andyglezl wrote:El archivo lo genera, pero al abrirlo con el Acrobat, no despliega nada del contenido
Intentaste con otro visualizador de PDF ? Por ejemplo Foxit Reader
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
Amarante
Posts: 182
Joined: Fri Apr 27, 2012 9:44 pm
DBs Used: DBF, MySQL, MariaDB, SQLite, PostgreSQL
Location: Araruama-RJ, Brazil

Re: ExecuteReport( )

Post by Amarante »

My software is distributed along with SumatraPDF only the executable (SumatraPDF.exe) and after generating a temporary PDF file I run a shell with between Sumatra and the PDF file.
-----------------------
Mi software se distribuye junto con SumatraPDF sólo el ejecutable (SumatraPDF.exe) y después de generar un archivo PDF temporal ejecuto un depósito de entre Sumatra y el archivo PDF.
-----------------------

Code: Select all

cArq_Pdf is my PDF file
Run_MyProcess( 'SumatraPDF.exe "' + cArq_Pdf + '"', .T. )


/**
* 
* Run_MyProcess
* 
* Description: Executes an external process
* Syntax.....: Run_MyProcess( <expC1>, [expL1], [expB1], [expN1], [expN2] )
* Parameters.: <expC1> - Expression of process running
*              [expL1] - Wait on process (default .T.)
*              [expB1] - Block-function to be performed during the process
*              [expN1] - Time (default 1)
*              [expN2] - Number of times to perform the block-function (default 0)
* Return.....: expN - Result of the process
* Example....: 
*   Run_MyProcess( "SumatraPDF.exe " + "Certidao.PDF", .T. )
*   ------ other sample -----
*   hb_memowrit( "test.txt", "Test File..." )
*   ? "Retorno:", Run_MyProcess( "notepad test.txt", .T., { || QOUT( "Waiting Notepad close..." ) }, 1 )
*   WAIT "When you get here notepad already ended. press ENTER..."
*   ? "Retorno:", Run_MyProcess( "notepad test.txt", .F. )
*   WAIT "When you get here notepad is still running. press ENTER..."
*   ? "Retorno:", Run_MyProcess( "notepad test.txt",, { | nCtd | QOUT( "Waiting Notepad close (" + hb_ntos( 5 - nCtd ) + ")..." ) },, 5 )
*   WAIT "The Loop was closed after in 5 seconds..."
*   ? "Retorno:", Run_MyProcess( "notepad test.txt",, { | nCtd | QOUT( "Forcing the closure of Notepad by returning the codeblock..." ), IIF( nCtd = 2, .F., .T. ) } )
*   WAIT "The Loop was closed..."
* 
*/
FUNCTION Run_MyProcess( cExecute, lWait, bBlock, nTime, nOccurs )

  LOCAL cWin_ := _HMG_SYSDATA[ 316 ]                      // Name of the current window
  LOCAL hProcess
  LOCAL nCtd := 0
  LOCAL nResult
  LOCAL lRet

  __DefaultNIL( @lWait, .T. )
  __DefaultNIL( @nTime, 1 )
  __DefaultNIL( @nOccurs, 0 )

  hProcess := HB_ProcessOpen( cExecute )
  IF hProcess <> F_ERROR
    SetLayeredWindowAttributes( GetFormHandle( cWin_ ), 0, 180, LWA_ALPHA )
    DO WHILE ( nResult := HB_ProcessValue( hProcess, .F. ) ) == - 1
      DO EVENTS
      IF .NOT. lWait
        EXIT
      ENDIF
      nCtd += 1
      IF HB_IsBlock( bBlock )
        lRet := EVAL( bBlock, nCtd )
        IF HB_IsLogical( lRet ) .AND. .NOT. lRet
          HB_ProcessClose( hProcess, .T. )
          EXIT
        ENDIF
      ENDIF
      IF nTime > 0
        HB_IdleSleep( nTime )
      ENDIF
      IF nCtd == nOccurs
        HB_ProcessClose( hProcess, .T. )
        EXIT
      ENDIF
    ENDDO
    SetLayeredWindowAttributes( GetFormHandle( cWin_ ), 0, 255, LWA_ALPHA )
  ENDIF
  RETURN nResult
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: ExecuteReport( )

Post by andyglezl »

Gracias Amarante
El detalle aquí en México es que las páginas oficiales de Gobierno indican qe debe ser el Acrobat Reader
el que se utilice ( claro, puede ser cualquier lector de PDF), por eso es el que está instaldo en la mayoría
de computadoras.

Gracias Pablo Cesar
Entré a la página de Acrobat y hay una nueva version de Acrobat Reader
http://get.adobe.com/es/reader/otherversions/ el cual instalé y ya me funciona la opcion de
Guardar como PDF de la ventana de PREVIEW.
---------------------------------------------------------------------------------------------------------------------------
Thanks Amarante
The detail here in Mexico is that official government pages indicate qe must be the Acrobat Reader
which is used (of course, can be any PDF reader), so it is what it is installed in most of computers.

Thanks Pablo Cesar
I went to the page Acrobat and there is a new version of Acrobat Reader
http://get.adobe.com/es/reader/otherversions/ which I installed it and it works the option of
Save as PDF PREVIEW window.
createRepSample4.jpg
createRepSample4.jpg (292.06 KiB) Viewed 3585 times
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

ExecuteReport( )

Post by Pablo César »

Ok Andrés I'm happy you got it with new Adobe (but still is strange for me).

Probably you were with any problem with Adobe installed at your computer.

You do not answered me about:
Pablo César wrote:Lo que se poderia hacer, es visualizar en EMF y generar el archivo PDF. Eso poderia ser un sugerencia que puedes hacerlo en la seccion WishList.
Is it interesting for you to make preview thru EMF file and also generate PDF ?

IMHO this is valid, what do you think, Andrés ?

Because why to use PREVIEW (second parameter as true) and not be displayed ???
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: ExecuteReport( )

Post by andyglezl »

La primera intención era generar el reporte en un archivo PDF [ ExecuteReport( 'Ctes2', .t., .t., cRaiz + "Clientes.pdf" ) ]
y mostrarlo con el Acrobat Reader.
Dentro del Acrobat, el usuario tiene la opción de solo verlo, imprimirlo ó enviarlo por correo según su necesidad,
pero con los detalles de no mostrar el .jpg, acentos y demás, opté por probar la opción del PREVIEW [ ExecuteReport( 'Ctes2', .t., .f. ) ]
en donde se muestra el reporte en pantalla para decidir si solo desea verlo ó imprimirlo y tener opción a guardarlo como PDF y despues
si desea, enviarlo por correo.
Andrés González López
Desde Guadalajara, Jalisco. México.
Post Reply