Ver PDF dentro de la aplicación

Re: Ver PDF dentro de la aplicación

Postby karinha » Tue Jun 14, 2016 1:02 pm

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

Re: Ver PDF dentro de la aplicación

Postby fgondi » Wed Jun 15, 2016 10:02 am

Hola,

Estoy probando el ejecutable que has enviado, con un pdf de 302KB con 2 hojas, y no se vé. aparece el cuadro dentro de la clase tRichEdit5, pero no carga el pdf
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Ver PDF dentro de la aplicación

Postby cnavarro » Wed Jun 15, 2016 11:15 am

fgondi wrote:Hola,

Estoy probando el ejecutable que has enviado, con un pdf de 302KB con 2 hojas, y no se vé. aparece el cuadro dentro de la clase tRichEdit5, pero no carga el pdf


Fernando
Construye el ejecutable con el source que he puesto y prueba de nuevo
Yo lo he probado con PDFs más grandes

Si tienes algún problema envíame un correo
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: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ver PDF dentro de la aplicación

Postby cnavarro » Thu Jun 16, 2016 8:17 am

Esta versión también ve los ficheros dentro de un .zip

https://bitbucket.org/fivetech/fivewin- ... explor.exe
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: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ver PDF dentro de la aplicación

Postby Carles » Thu Jun 16, 2016 12:04 pm

Fernando,

Y porque no se encarga Windows de buscar el programa que tenga cada uno configurado ?

Code: Select all  Expand view
   nRet := ShellExecute( GetWndApp(), ,cFile, ,cFilePath( cFile ), SW_SHOW )
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1098
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Ver PDF dentro de la aplicación

Postby cnavarro » Thu Jun 16, 2016 6:12 pm

Carles

Yo he entendido que necesita mostrar el pdf dentro de un "control" en su aplicación, y no en una ventana externa
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: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ver PDF dentro de la aplicación

Postby Carles » Fri Jun 17, 2016 6:56 am

Vale,

Pues prueba con esto para jugar un poco con el tema...

Code: Select all  Expand view
#include 'fivewin.ch'

#define SW_SHOW 5
#define SW_HIDE 0

STATIC oWnd

*--------------
FUNCTION MAIN()
*--------------
   
    DEFINE WINDOW oWnd MDI
    ACTIVATE WINDOW oWnd ON INIT Test()
   
RETU NIL

*--------------
FUNCTION Test()
*--------------
    LOCAL cFile     := 'manual.pdf'
    LOCAL nRet      := ShellExecute( oWnd:hWnd, ,cFile, ,cFilePath( cFile ), SW_HIDE )
    LOCAL hWndPdf
   
    SysWait(1)
   
    hWndPdf := FindWindow(0, cFile + " - Adobe Reader" )       

    SetParent( hWndPdf, oWnd:hWnd ) 

RETU NIL
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1098
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Ver PDF dentro de la aplicación

Postby fgondi » Mon Jun 20, 2016 8:58 am

Gracias Carles por la información,

Ese sistema ya lo había probado (en concreto para capturar una excel), pero provoca problemas.

1.- Si ya está abierta la aplicación externa, captura toda ella. Por tanto el documento que estuviese viendo, externo a mi aplicación, también quedaría capturado dentro de mi aplicación.

2º.- Si no está abierto, parece que funciona bien, hasta que intenta abrir un documento externo a mi aplicación, sin haber cerrado la captura generada. Este documento externo se abre dentro de mi aplicación.

De nuevo muchas gracias Carles.

Seguiré trabajando con la opción de Cristobal.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Ver PDF dentro de la aplicación

Postby Carles » Tue Jun 21, 2016 6:06 am

Fernando,

Entiendo :D . Y has probado de usar activex con el shell.explorer ? Esto seguro te funciona y solo tendrias de crear un html de 4 lineas para leer tus pdf's. La ventaja de usar shell.explorer es que seguro q esta en todos los ordenadores de tus clientes, otros activex ya implica gestión de si existe o no. Si necesitas un ejemplo te lo publico
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1098
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Ver PDF dentro de la aplicación

Postby fgondi » Tue Jun 21, 2016 8:28 am

Carles,

Usar el activex del Explorer fue mi primera opción.
En versiones mas modernas del navegador, se abren directamente los pdf. En las antiguas no, pero, tal y como dices, con 4 líneas de código se puede forzar a que las abra.

El navegador usa internamente el activex de acrobat (si está instalado) y sería la opción perfecta.

Sin embargo, tengo otros problemas, que estoy intentando resolver, que me obligan a ejecutar las aplicaciones con "Compatibilidad para XP" y al ejecutarse con esa compatibilidad no cargan los pdf's.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: Ver PDF dentro de la aplicación

Postby Carles » Tue Jun 21, 2016 12:16 pm

Fernando,

Para XP no se como poder hacerlo via activex :( . Ya contaras... (Yo si son casos puntuales como dices, chequearia la version win que usas y si es XP lanzaria un winexec() y sino via activex empotrado en la app)

Ya contaras como te has salido...
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1098
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Ver PDF dentro de la aplicación

Postby HunterEC » Thu Jun 23, 2016 8:12 am

Cristobal:

Excelente programa. Muy profesional. Tiene un pequeño "bug" cuando escoges del menu un tipo de fichero y no hay de ellos, se cancela con un error.
HunterEC
 
Posts: 723
Joined: Tue Sep 04, 2007 8:45 am

Re: Ver PDF dentro de la aplicación

Postby cnavarro » Thu Jun 23, 2016 10:34 am

Solucionado, gracias

https://bitbucket.org/fivetech/fivewin- ... explor.exe

Code: Select all  Expand view


#include "fivewin.ch"
#include "RichEdi5.ch"

//----------------------------------------------------------------------------//

REQUEST HB_CODEPAGE_ESWIN

Static oRTF
Static cRTF
Static nFilter
Static cDirName
Static aFilesTxt
Static aFilesImg
Static aFilesObj
Static aFilesAll

//----------------------------------------------------------------------------//

function Main()

   local aImages
   local oWnd
   local oFont
   local oBrush
   local oBrw
   local nWBrw   := 300

   FW_SetUnicode( .t. )
   HB_CDPSELECT( "ESWIN" )
   HB_SETCODEPAGE( "UTF8" ) // Harbour (not xHarbour) to display unicode filenames

   aFilesTxt := { "RTF", "ZIP", "TXT", "PRG", "C", "CPP", "H", "CH", "RC", "INI", "BAT", "MAK", "XML", "LOG", "PPO" }
   aFilesImg := { "BMP", "PNG", "JPG", "ICO", "DIB", "PCX", "GIF", "WMF" }
   aFilesObj := { "DOC", "XLS", "PPT", "PDF", "DOCX", "XLSX" }
   aFilesAll := { "DBF" }

   //ReadDir()
   
   nFilter  := 0
   cDirName := hb_CurDrive() + ":\" + CurDir()
   aImages  := ReadFolder()

   DEFINE FONT oFont NAME "
VERDANA" SIZE 0,-14
   //DEFINE BRUSH oBrush FILE "
..\bitmaps\backgrnd\stone.bmp"
   
   DEFINE WINDOW oWnd TITLE "
FWExplorer: Visor de Documentos - [ TRichEdit Control ]"
   oWnd:SetFont( oFont )
   
   SET MESSAGE OF oWnd TO "
" 2015
   DEFINE BUTTONBAR oWnd:oBar SIZE 70, 32 2015

   DEFINE BUTTON OF oWnd:oBar PROMPT "
Exit"   CENTER ACTION ( oWnd:End() )  
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Rtf"    CENTER ACTION ( nFilter := 1, ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Text"   CENTER ACTION ( nFilter := 11, ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Images" CENTER ACTION ( nFilter := 2 , ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Object" CENTER ACTION ( nFilter := 3 , ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Dbf"    CENTER ACTION ( nFilter := 4 , ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
All"    CENTER ACTION ( nFilter := 0 , ;
          oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )
   DEFINE BUTTON OF oWnd:oBar PROMPT "
Folder" CENTER ;
      ACTION ( cDirName := cGetDir( "
Select Folder", GetCurDir() + "\" ), ;
               SetCurDir( cDirName ), ;
               oBrw:aArrayData := ReadFolder(), oBrw:Refresh( .t. ), VerDoc( oBrw ) )

   @ oWnd:oBar:nHeight,0 XBROWSE oBrw SIZE nWBrw, -oWnd:oMsgBar:nHeight ;
      PIXEL OF oWnd DATASOURCE aImages COLUMNS 1 CELL LINES NOBORDER

   WITH OBJECT oBrw
      :l2007 := .F.
      :aCols[ 1 ]:cHeader := "
Files"
      :nStretchCol   := 1
      :bChange       := { | o | VerDoc( o ) }
      :bLDblClick    := { | o | LookOthers( oBrw ) }
      :bClrStd       := { || { If( oBrw:aRow[ 3 ] == 1, CLR_BLUE, CLR_HRED ), CLR_WHITE } }
      :bKeyDown      := { |n,f| if( n = VK_RETURN, Eval( oBrw:bLDblClick ), ) }
      :CreateFromCode()
   END

   WITH OBJECT oWnd
      :nWidth     := ScreenWidth()  * 0.6
      :nHeight    := ScreenHeight() * 0.6
   END

   @ oWnd:oBar:nHeight, nWBrw RICHEDIT5 oRTF VAR cRTF OF oWnd ;
     SIZE oWnd:nWidth - (nWBrw+18), oBrw:nHeight*1.82 PIXEL NOBORDER HSCROLL

   ACTIVATE WINDOW oWnd CENTERED ON INIT VerDoc( oBrw ) ;
   ON PAINT ( oRTF:SetSize( oWnd:nWidth - (nWBrw+18), oBrw:nHeight-2 ) ) //ON INIT oWnd:SetControl( oRTF )
   
   RELEASE FONT oFont
   //RELEASE BRUSH oBrush

return nil

//----------------------------------------------------------------------------//

Function VerDoc( oBrw )

   local nOpc      := 0
   local lText     := .F.
   //local cFile     := AnsiToWide( AllTrim( oBrw:aRow[ 2 ] ) )
   local cFile     := if( Len( oBrw:aArrayData ) > 0, AllTrim( oBrw:aRow[ 2 ] ), "
" )
   local aFiles    := {}
   local cText     := "
"
   
   if !Empty( cFile )
      if !Empty( Ascan( aFilesTxt, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
         nOpc  := 1
      endif
      if Empty( nOpc )
         if !Empty( Ascan( aFilesImg, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
            nOpc  := 2
         endif
      endif
      if Empty( nOpc )
         if !Empty( Ascan( aFilesObj, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
            nOpc  := 3
         endif
      endif
      if Empty( nOpc )
         if !Empty( Ascan( aFilesAll, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
            nOpc  := 4
         endif
      endif
   endif
   oRTF:SetClear()
   oRTF:SelectAll()
   oRTF:Del()

   Do Case
      Case nOpc = 0
         lText  := .T.
         oRTF:SetText( "
<File Format not supported>" )
     
      Case nOpc = 1

         if Upper( cFileExt( cFile ) ) <> "
RTF"
            if Upper( cFileExt( cFile ) ) == "
ZIP"        
               aFiles := hb_GetFilesInZip( cFile )
               if !Empty( aFiles )
                  cText  += Upper( cFileNoPath( cFile ) ) + "
=> " + CRLF
                  AEVal( aFiles, { | a | cText += Chr( 9 ) + Chr( 9 ) + Chr( 9 ) + a + CRLF } )
                  lText  := .T.
                  oRTF:SetText( cText )
               endif
            else
               lText  := .T.
               oRTF:SetText( MemoRead( cFile ) )
            endif
         else
            oRTF:LoadFromRTFFile( cFile )
         endif
     
      Case nOpc = 2
     
         oRTF:InsertPictureFile( cFile )

      Case nOpc = 3
         
         oRTF:InsertObject( cFile ) //+ Chr( 0 ) )

      Case nOpc = 4
         lText  := .T.
         oRTF:SetText( "
<File Format not supported: Double Click or Intro>" )

      Otherwise
     
         oRTF:LoadRTF( cFile )      

   EndCase

Return nil

//----------------------------------------------------------------------------//

Static Function LookOthers( oBrw )

   local nOpc      := 0
   
   if !Empty( Ascan( aFilesTxt, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
      nOpc  := 1
   endif
   if Empty( nOpc )
      if !Empty( Ascan( aFilesImg, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
         nOpc  := 2
      endif
   endif
   if Empty( nOpc )
      if !Empty( Ascan( aFilesObj, Upper( cFileExt( oBrw:aRow[ 2 ] ) ) ) )
         nOpc  := 3
      endif
   endif
   if Empty( nOpc )
      if Upper( cFileExt( oBrw:aRow[ 2 ] ) ) = "
DBF"
         XBrowse( oBrw:aRow[ 2 ] )
      else
         MsgInfo( "
Format not supported", oBrw:aRow[ 2 ] )
      endif
   endif

Return nil

//----------------------------------------------------------------------------//

static function ReadFolder()

   local aImages  := {}
   local aSub     := { "
*" }
   local c
   local x
   local cPath    := cDirName
   local aDir
   local aAlls    := {}

   AEVal( aFilesTxt, { | a | AAdd( aAlls, a ) } )
   AEVal( aFilesImg, { | a | AAdd( aAlls, a ) } )
   AEVal( aFilesObj, { | a | AAdd( aAlls, a ) } )
   AEVal( aFilesAll, { | a | AAdd( aAlls, a ) } )

   Do Case
      Case nFilter = 0
           aSub    := { "
*" }
      Case nFilter = 1
           aSub    := { "
rtf" }
      Case nFilter = 11
           aSub    := aClone( aFilesTxt )
           aSub    := ADel( aSub, 1 )
           ASize( aSub, Len( aSub ) - 1 )
      Case nFilter = 2
           aSub    := aClone( aFilesImg )
      Case nFilter = 3
           aSub    := aClone( aFilesObj )
      Case nFilter = 4
           aSub    := { "
dbf" }
   EndCase
   
   for each c in aSub
      aDir     := Directory( cPath + "
\*." + c )
      AEval( aDir, { | a | AAdd( aImages, { Lower( a[ 1 ] ), ;
                           Lower( TrueName( cPath + "
\" + a[ 1 ] ) ), 0 } ) } )
   next
   For x = 1 to Len( aImages )
      if !Empty( Ascan( aAlls, Upper( cFileExt( aImages[ x ][ 2 ] ) ) ) )
         aImages[ x ][ 3 ] := 1
      endif
   Next x
   
   ASort( aImages,,,{ | x, y | Lower( x[ 1 ] ) < Lower( y[ 1 ] ) } )

return aImages

//----------------------------------------------------------------------------//

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: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ver PDF dentro de la aplicación

Postby Carlos Mora » Fri Jun 24, 2016 8:56 am

Hola a todos,

retomando la solución propuesta por Antonio, y que además serviría para más cosas...

https://bitbucket.org/chromiumembedded/cef

Chrome embebido en las aplicaciones. No es una tarea fácil pero seria más que interesante poder tener un browser tan completo dentro de nuestras aplicaciones, y con su js y todo lo que eso conlleva.

¿Que os parece?
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Ver PDF dentro de la aplicación

Postby Carlos Mora » Fri Jun 24, 2016 12:01 pm

Chrome MFC ...

https://github.com/VladimirRybakov/cef-mfc

más cerca aun! Un control TCef no estaria mal :)
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 49 guests