Ver PDF dentro de la aplicación
Re: Ver PDF dentro de la aplicación
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
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 GHE Sistemas Informáticos
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Re: Ver PDF dentro de la aplicación
Fernandofgondi 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
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
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Ver PDF dentro de la aplicación
Esta versión también ve los ficheros dentro de un .zip
https://bitbucket.org/fivetech/fivewin- ... explor.exe
https://bitbucket.org/fivetech/fivewin- ... explor.exe
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Ver PDF dentro de la aplicación
Fernando,
Y porque no se encarga Windows de buscar el programa que tenga cada uno configurado ?
Y porque no se encarga Windows de buscar el programa que tenga cada uno configurado ?
Code: Select all
nRet := ShellExecute( GetWndApp(), ,cFile, ,cFilePath( cFile ), SW_SHOW )
Salutacions, saludos, regards
"...programar es fácil, hacer programas es difícil..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
"...programar es fácil, hacer programas es difícil..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
Re: Ver PDF dentro de la aplicación
Carles
Yo he entendido que necesita mostrar el pdf dentro de un "control" en su aplicación, y no en una ventana externa
Yo he entendido que necesita mostrar el pdf dentro de un "control" en su aplicación, y no en una ventana externa
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: Ver PDF dentro de la aplicación
Vale,
Pues prueba con esto para jugar un poco con el tema...
Pues prueba con esto para jugar un poco con el tema...
Code: Select all
#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..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
"...programar es fácil, hacer programas es difícil..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
Re: Ver PDF dentro de la aplicación
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.
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 GHE Sistemas Informáticos
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Re: Ver PDF dentro de la aplicación
Fernando,
Entiendo . 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
Entiendo . 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..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
"...programar es fácil, hacer programas es difícil..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
Re: Ver PDF dentro de la aplicación
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.
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 GHE Sistemas Informáticos
Fernando González Diez
ALSIS GHE Sistemas Informáticos
Re: Ver PDF dentro de la aplicación
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...
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..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
"...programar es fácil, hacer programas es difícil..."
https://modharbour.app
https://modharbour.app/compass
https://forum.modharbour.app
Re: Ver PDF dentro de la aplicación
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.
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.
Re: Ver PDF dentro de la aplicación
Solucionado, gracias
https://bitbucket.org/fivetech/fivewin- ... explor.exe
https://bitbucket.org/fivetech/fivewin- ... explor.exe
Code: Select all
#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
//----------------------------------------------------------------------------//
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Re: Ver PDF dentro de la aplicación
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?
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
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Re: Ver PDF dentro de la aplicación
Chrome MFC ...
https://github.com/VladimirRybakov/cef-mfc
más cerca aun! Un control TCef no estaria mal
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
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"