Ver PDF dentro de la aplicación

Ver PDF dentro de la aplicación

Postby fgondi » Tue Jun 07, 2016 4:24 pm

Hola,

Hasta ahora los pdf's los muestro dentro de la aplicación con el ActiveX de Acrobat Reader.
Pero cada vez que hay una actualización del Acrobat Reader, suele generar problemas y ya no se ven los PDF.
Tengo que andar cambiando condiciones en Acrobat Reader para que se puedan ver y en cada versión son distintas.

Me gustaría poder dejar de usar Acrobat, para dejar de tener problemas.
¿Alguno usa algún visor de PDF dentro de las aplicaciones?, ¿Cúal?

Muchas gracias
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 Antonio Linares » Tue Jun 07, 2016 5:52 pm

Fernando,

Yo suelo usar Chrome como visor de PDFs.

Imagino que modificando samples\webexp.prg podrias usarlo de visor de PDFs.

No lo he probado pero debería funcionar :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ver PDF dentro de la aplicación

Postby karinha » Tue Jun 07, 2016 5:59 pm

http://www.4shared.com/rar/8b-A7H06ba/SUMATRA.html

http://www.sumatrapdfreader.org/manual-pt.html


Code: Select all  Expand view  RUN

   LOCAL ImprimePDF := "C:\PDF\Nombre.PDF"

   //WinExec(oApp:cDir_001+"sumatra\sumatrapdf.exe -reuse-instance -lang pt "+ImprimePDF)   //-restrict -fullscreen
   WinExec( "C:\sumatra\sumatrapdf.exe -reuse-instance -lang en "+ImprimePDF)   //-restrict -fullscreen
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ver PDF dentro de la aplicación

Postby karinha » Tue Jun 07, 2016 6:09 pm

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

Re: Ver PDF dentro de la aplicación

Postby Antonio Linares » Tue Jun 07, 2016 7:46 pm

No caí en la cuenta de que samples\webexp.prg usa Internet Explorer y no Chrome.

Buscando en google he encontrado esto que parece que puede servir:
Code: Select all  Expand view  RUN
set WshShell=WScript.CreateObject("WScript.Shell")
   strAnswer = InputBox("Please enter a name for your new file:")
   WshShell.run "chrome.exe"
   WScript.sleep 100
   WshShell.sendkeys "www.google.com"
   WshShell.sendkeys "{ENTER}"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ver PDF dentro de la aplicación

Postby fgondi » Wed Jun 08, 2016 7:42 am

Muchas gracias Karinha, pero la intención que tengo es que se vea dentro de la aplicación, como una ventana mas de la misma.

Muchas gracias Antonio, voy a probar lo del chrome.
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 Antonio Linares » Wed Jun 08, 2016 8:09 am

Fernando,

Lo que no se es como podemos "incrustarlo" en la aplicación

Aqui tienes otro ejemplo parecido al anterior:
http://stackoverflow.com/questions/13401749/opening-browser-on-a-variable-page-using-vbscript
I found the easiest way is to do this:

set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.run "chrome.exe"
WScript.sleep 400
WshShell.sendkeys "URL HERE"
WshShell.sendkeys "{ENTER}"
also just a fyi you can do this to close chrome:

WshShell.sendkeys "%{F4}"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ver PDF dentro de la aplicación

Postby Antonio Linares » Wed Jun 08, 2016 8:15 am

Aqui tenemos un ejemplo de como usar wscript.shell desde Harbour:

viewtopic.php?p=50307

Code: Select all  Expand view  RUN
oRemoteShell:=CreateObject("WScript.Shell")
oRemoteShell:Run("ShutDown -s -m \\NombrePC",0,.F.)
oRemoteShell:=nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ver PDF dentro de la aplicación

Postby fgondi » Thu Jun 09, 2016 3:13 pm

Hola Antonio,

Ya usaba createobject("WScrip.Shell")

Pero con chrome lo lanza en una ventana independiente, e intentar capturar esa ventana e incrustarla dentro de mi aplicación, no creo que vaya a tener un resultado muy correcto.

Ya probé con Excel a capturar e incrustar y tuve que desistir porque perdían la posibilidad de abrir otra vez excel de forma independiente. Y para que excel tratará cada apertura de forma independiente, había que cambiar el registro de windows. En definitiva un lío para el objetivo que perseguía.

Leyendo en internet, para conseguir que chrome se comporte igual que internet explorer y su activex, hay que variar también varias cosas en el registro.

Voy a seguir buscando otras posibilidades, antes de cambiar en el registro de windows como actúa una aplicación externa. No vaya a ser en que la próxima actualización ya no sirva esa variación en el registro y no sirva para nada lo que hice.
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 hmpaquito » Thu Jun 09, 2016 3:24 pm

Hola Fernando,


Todos hemos lidiado con hacking, pero este caso de la incrustacion pdf es summum.

Bueno... he entrado a darte otra alternativa. ¿ Qué tal transformar los .pdf en .jpg y mostrarlos con un control image ?

Saludos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Ver PDF dentro de la aplicación

Postby fgondi » Thu Jun 09, 2016 5:23 pm

Muchas gracias,

Es una posibilidad a valorar. No es lo tenia pensado, pero puede servir.

Lo pruebo a ver como se ve
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 » Thu Jun 09, 2016 6:42 pm

Fernando, quizás te pueda servir esta solucion: usar un objeto TRichEdit

Veo que tienes la version 16.04
En la carpeta samples tienes un ejemplo TestRtf5.prg
En la function New
Al crear el control quitale la carga del fichero de ejemplo

Code: Select all  Expand view  RUN

   @  200, 0 RICHEDIT5 oRTF VAR cRTF OF oWnd //FILE "TestRTF.RTF"
 


y en la activacion de la MdiChild

Code: Select all  Expand view  RUN

ACTIVATE WINDOW oWnd MAXIMIZED ON INIT oRTF:InsertObject("d:\fwh\fwhteam\samples\testrtf.pdf")
 


Creo que como ejemplo de inicio para ello te puede servir ( usa siempre el path entero para el fichero a cargar: Word, excel, pdf )

Image

Code: Select all  Expand view  RUN

ACTIVATE WINDOW oWnd MAXIMIZED ON INIT oRTF:InsertObject("d:\fwh\fwhteam\samples\testrtf.xlsx")
 


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: Ver PDF dentro de la aplicación

Postby fgondi » Fri Jun 10, 2016 8:50 am

Muy interesante Cristobal,


Lo pruebo ahora mismo
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 » Fri Jun 10, 2016 9:26 am

Fernando


#command @ <nTop>, <nLeft> RICHEDIT5 [ <oRTF> VAR ] <uVar> ;
[ <dlg: OF, WINDOW, DIALOG> <oWnd> ] ;
[ SIZE <nWidth>, <nHeight> ] ;
[ FONT <oFont> ] ;
[ <pixel: PIXEL> ] ;
[ MESSAGE <cMsg> ] ;
[ <lHScroll: HSCROLL> ] ;
[ <readonly: READONLY, NO MODIFY> ] ;
[ WHEN <uWhen> ] ;
[ VALID <uValid> ] ;
[ ON CHANGE <uChange> ] ;
[ <lDesign: DESIGN> ] ;
[ <lHighlight: HIGHLIGHT> ] ;
[ <file: FILE, FILENAME> <cFileName> ] ;
[ RTFSIZE <nRTFSize> ] ;
[ <lNoURL: NO URL> ] ;
[ <lNoScroll: NO SCROLL> ] ;
[ <lNoBorder: NOBORDER, NO BORDER> ] ;
[ MARGINLEFT <nLeftMargin> ]


Como curiosidad, también permite insertar "presentaciones" PowerPoint
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: Ver PDF dentro de la aplicación

Postby cnavarro » Fri Jun 10, 2016 7:59 pm

He desarrollado un pequeño programa como ejemplo del uso del control TRichEdit5, para visualizar el contenido de los ficheros
( En los ficheros DBF hay que hacer Double-Click para verlos con XBrowse )

El .EXE construído

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

Y aquí está el codigo:

Code: Select all  Expand view  RUN

// FWExplorer
// Cnl - 10/06/2016

#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

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

   FW_SetUnicode( .t. )
   HB_CDPSELECT( "ESWIN" )
   HB_SETCODEPAGE( "UTF8" ) // Harbour (not xHarbour) to display unicode filenames
   
   nFilter  := 0
   cDirName := hb_CurDrive() + ":\" + CurDir()
   aImages  := ReadFolder()

   DEFINE FONT oFont NAME "
TAHOMA" 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
      :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.
   
   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
   
   oRTF:SetClear()
   oRTF:SelectAll()
   oRTF:Del()

   Do Case
      Case nOpc = 1

         if Upper( cFileExt( oBrw:aRow[ 2 ] ) ) <> "
RTF"
            lText  := .T.
            oRTF:SetText( MemoRead( AllTrim( oBrw:aRow[ 2 ] ) ) )
         else
            oRTF:LoadFromRTFFile( AllTrim( oBrw:aRow[ 2 ] ) )        
         endif
     
      Case nOpc = 2
     
         oRTF:InsertPictureFile( AllTrim( oBrw:aRow[ 2 ] ) )

      Case nOpc = 3
         
         oRTF:InsertObject( AllTrim( oBrw:aRow[ 2 ] ) + Chr(0) )      
         
      Otherwise
     
         oRTF:LoadRTF( AllTrim( oBrw:aRow[ 2 ] ) )      

   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

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


Image

Image

Image

Image

Image

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 59 guests