Ver PDF dentro de la aplicación
Ver PDF dentro de la aplicación
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
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
Fernando González Diez
ALSIS Sistemas Informáticos
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Ver PDF dentro de la aplicación
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
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

- karinha
- Posts: 7963
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 5 times
- Contact:
Re: Ver PDF dentro de la aplicación
http://www.4shared.com/rar/8b-A7H06ba/SUMATRA.html
http://www.sumatrapdfreader.org/manual-pt.html
http://www.sumatrapdfreader.org/manual-pt.html
Code: Select all | Expand
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
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Ver PDF dentro de la aplicación
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:
Buscando en google he encontrado esto que parece que puede servir:
Code: Select all | Expand
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}"
Re: Ver PDF dentro de la aplicación
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.
Muchas gracias Antonio, voy a probar lo del chrome.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
Fernando González Diez
ALSIS Sistemas Informáticos
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Ver PDF dentro de la aplicación
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
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}"
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Ver PDF dentro de la aplicación
Aqui tenemos un ejemplo de como usar wscript.shell desde Harbour:
viewtopic.php?p=50307
viewtopic.php?p=50307
Code: Select all | Expand
oRemoteShell:=CreateObject("WScript.Shell")oRemoteShell:Run("ShutDown -s -m \\NombrePC",0,.F.)oRemoteShell:=nil
Re: Ver PDF dentro de la aplicación
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.
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
Fernando González Diez
ALSIS Sistemas Informáticos
Re: Ver PDF dentro de la aplicación
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
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
Re: Ver PDF dentro de la aplicación
Muchas gracias,
Es una posibilidad a valorar. No es lo tenia pensado, pero puede servir.
Lo pruebo a ver como se ve
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
Fernando González Diez
ALSIS Sistemas Informáticos
- cnavarro
- Posts: 6572
- Joined: Wed Feb 15, 2012 8:25 pm
- Location: España
- Has thanked: 4 times
- Been thanked: 6 times
Re: Ver PDF dentro de la aplicación
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
y en la activacion de la MdiChild
Creo que como ejemplo de inicio para ello te puede servir ( usa siempre el path entero para el fichero a cargar: Word, excel, pdf )


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
@ 200, 0 RICHEDIT5 oRTF VAR cRTF OF oWnd //FILE "TestRTF.RTF"
y en la activacion de la MdiChild
Code: Select all | Expand
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 )

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

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
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
Re: Ver PDF dentro de la aplicación
Muy interesante Cristobal,
Lo pruebo ahora mismo
Lo pruebo ahora mismo
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
Fernando González Diez
ALSIS Sistemas Informáticos
- cnavarro
- Posts: 6572
- Joined: Wed Feb 15, 2012 8:25 pm
- Location: España
- Has thanked: 4 times
- Been thanked: 6 times
Re: Ver PDF dentro de la aplicación
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
#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
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
- cnavarro
- Posts: 6572
- Joined: Wed Feb 15, 2012 8:25 pm
- Location: España
- Has thanked: 4 times
- Been thanked: 6 times
Re: Ver PDF dentro de la aplicación
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:






( 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
// FWExplorer// Cnl - 10/06/2016#include "fivewin.ch"#include "RichEdi5.ch"//----------------------------------------------------------------------------//REQUEST HB_CODEPAGE_ESWINStatic oRTFStatic cRTFStatic nFilterStatic cDirNameStatic aFilesTxtStatic aFilesImgStatic aFilesObjStatic 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 oBrushreturn 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 ] ) ) EndCaseReturn 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 endifReturn 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
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