Ver PDF dentro de la aplicación
Re: Ver PDF dentro de la aplicación
Joao, gracias
Comprobar si es un fichero de imagen válido
Buen aporte, se me había olvidado esa opción
Saludos
Pd.: voy a subir en un rato una nueva versión con esa modificación y además ya leerá ficheros con caracteres utf
Comprobar si es un fichero de imagen válido
Buen aporte, se me había olvidado esa opción
Saludos
Pd.: voy a subir en un rato una nueva versión con esa modificación y además ya leerá ficheros con caracteres utf
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
Nueva version:cnavarro wrote:Joao, gracias
Comprobar si es un fichero de imagen válido
Buen aporte, se me había olvidado esa opción
Saludos
Pd.: voy a subir en un rato una nueva versión con esa modificación y además ya leerá ficheros con caracteres utf
Test if is a valid image file and say files with characters utf
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
Static oMessage
Static oAnsi
Static oUtf8
Static oUtf16
Static oUnicode
Static oBig
Static oBom
//----------------------------------------------------------------------------//
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
SET CENTURY ON
SET EPOCH TO 1980
SET DATE FORMAT TO "DD/MM/YYYY"
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 )
DEFINE MESSAGE oMessage OF oWnd 2015 //TO ""
DEFINE MSGITEM oAnsi PROMPT "Ansi: " + if( !Empty( oRTF ), if( oRTF:lUtf8, " NO", " SI" ), " SI" ) ;
OF oMessage SIZE 100
DEFINE MSGITEM oUtf8 PROMPT "Utf8: " + if( !Empty( oRTF ), if( oRTF:lUtf8, " SI", " NO" ), " NO" ) ;
OF oMessage SIZE 100
DEFINE MSGITEM oUtf16 PROMPT "Utf16: " + if( !Empty( oRTF ), if( oRTF:lUtf16, " SI", " NO" ), " NO" ) ;
OF oMessage SIZE 100
DEFINE MSGITEM oBom PROMPT "Bom: " + if( !Empty( oRTF ), if( oRTF:lBom, " SI", " NO" ), " NO" ) ;
OF oMessage SIZE 100
DEFINE MSGITEM oBig PROMPT "Big Endian: " + if( !Empty( oRTF ), if( oRTF:lBig, " SI", " NO" ), " NO" ) ;
OF oMessage SIZE 100
DEFINE MSGITEM oUnicode PROMPT "Unicode: " + if( !Empty( oRTF ), if( oRTF:lUtf8, " ", " " ), " NO" ) ;
OF oMessage SIZE 100
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 ) )
DEFINE BUTTON OF oWnd:oBar PROMPT "Print" CENTER ACTION ( ;
PrintRtf( .T., oRTF, , ) ) //PrintRtf( lPreview, oRTF, oPrn, aRTF )
@ oWnd:oBar:nHeight, 0 XBROWSE oBrw SIZE nWBrw, -oWnd:oMsgBar:nHeight ;
PIXEL OF oWnd DATASOURCE aImages COLUMNS 1 CELL LINES NOBORDER AUTOSORT
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 := ""
local oError
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()
//TRY
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.
cText := MemoRead( cFile )
oRTF:DocIsUtf8( cText, )
//? oRTF:lUtf8, oRTF:lUtf16, oRTF:lBom, oRTF:lBig
if IsUtf8( cText )
oRTF:SetText( cText )
//oRTF:SetText( AnsiToWide( Right( cText, Len( cText ) - 3 ) ) )
//oRTF:SetText( Utf16toUtf8( cText ) )
else
oRTF:SetText( cText )
endif
endif
else
oRTF:LoadFromRTFFile( cFile )
endif
Case nOpc = 2
if FITypeFromMemory( MemoRead( cFile ) ) >= 0
oRTF:InsertPictureFile( cFile )
else
oRTF:SetText( "<File Format Image not valid>" )
endif
Case nOpc = 3
oRTF:InsertObject( cFile ) //+ Chr( 0 ) )
Case nOpc = 4
lText := .T.
oRTF:ViewDbf( cFile )
Otherwise
oRTF:LoadRTF( cFile )
EndCase
/*
CATCH oError
MsgInfo( "File Explorer " + ";" + ;
"Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + ;
"SubC: " + TRANSFORM(oError:SubCode, NIL) + ";" + ;
"OSCode: " + TRANSFORM(oError:OsCode, NIL) + ";" + ;
"SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" + ;
"Message: " + oError:Description + " "+ cFile )
END
*/
oAnsi:SetText( "Ansi: " + if( oRTF:lUtf8, " NO", " SI" ) )
oUtf8:SetText( "Utf8: " + if( oRTF:lUtf8, " SI", " NO" ) )
oUtf16:SetText( "Utf16: " + if( oRTF:lUtf16, " SI", " NO" ) )
oBom:SetText( "Bom: " + if( oRTF:lBom, " SI", " NO" ) )
oBig:SetText( "Big Endian: " + if( oRTF:lBig, " SI", " NO" ) )
oUnicode:SetText( "Unicode: " + if( oRTF:lUtf8, " ", " " ) )
oAnsi:Refresh()
oUtf8:Refresh()
oUtf16:Refresh()
oBig:Refresh()
oUnicode:Refresh()
oBom:Refresh()
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
//----------------------------------------------------------------------------//
Function PrintRtf( lPreview, oRTF, oPrn, aRTF )
local lPrn
DEFAULT aRTF := { 100, 1000, 510, 1490, 1990 } // { nFrom, nTop, nLeft, nBottom }
DEFAULT lPreview := .f.
if Empty( oPrn )
lPrn := .F.
if lPreview
PRINT oPrn NAME "FWH RICHEDIT FILE" PREVIEW
else
PRINT oPrn NAME "FWH RICHEDIT FILE"
endif
if Empty( oPrn:hDC )
MsgStop( "Printer not ready!" )
return nil
endif
else
lPrn := .T.
endif
if !lPrn
PAGE
CursorWait()
oPrn:Box( aRTF[ 2 ], 500, aRTF[ 2 ] + 1000, 1500 )
aRTF := REPrintBox5( oRTF:hWnd, If( lPreview, oPrn:hDCOut, oPrn:hDC ), ;
oRTF:IsSelection(), ;
aRTF[ 2 ] + 10, 510, 1490, aRTF[ 2 ] + 990, aRTF[ 1 ] )
CursorArrow()
ENDPAGE
ENDPRINT
else
oPrn:Box( aRTF[ 2 ], aRTF[ 3 ], aRTF[ 4 ], aRTF[ 5 ] )
aRTF := REPrintBox5( oRTF:hWnd, If( lPreview, oPrn:hDCOut, oPrn:hDC ), ;
oRTF:IsSelection(), ;
aRTF[ 2 ], aRTF[ 3 ], aRTF[ 4 ], aRTF[ 5 ], aRTF[ 1 ] )
endif
return aRTF
//----------------------------------------------------------------------------//
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
Hola Cristobal:
Tengo la necesidad de mostrar un documento Word pero sin que tenga la posibilidad de editarlo.
Intento utilizar el ejemplo tuyo insertando el documento en el Richedit como vos lo hiciste y me muestra, aleatoriamente, un mensaje que dice que FILE NOT FOUND y C.
No lo hace siempre.
Ademas, solo me muestra (tanto en tu programa como en el mio) solo la primera hoja del documento word.
Alguna pista?
Gracias por tu tiempo y tus ejemplos!
Tengo la necesidad de mostrar un documento Word pero sin que tenga la posibilidad de editarlo.
Intento utilizar el ejemplo tuyo insertando el documento en el Richedit como vos lo hiciste y me muestra, aleatoriamente, un mensaje que dice que FILE NOT FOUND y C.
No lo hace siempre.
Ademas, solo me muestra (tanto en tu programa como en el mio) solo la primera hoja del documento word.
Alguna pista?
Gracias por tu tiempo y tus ejemplos!
Re: Ver PDF dentro de la aplicación
El objetivo de los ejemplos es ver como insertar objetos de otros programas en un .RTF, pero no es un editor por sí mismo
Quiero decir, que si tu insertas un objeto de un documento pdf en un RTF y pulsas doble click te envia al visualizador de PDFs que tengas configurado por defecto, lo mismo hace con los documentos WORD. Es un "visor", por eso solo te muestra la primera página del documento.
Pero, igual funciona WORD. Si tu insertas un objeto PDF sólo te muestra la primera página y al dar doble click te abre el Adobe o el visualizador que tengas configurado.
En cuanto al problema que comentas, me he dado cuenta. Voy a darle unas vueltas a ver si veo donde puede estar el problema
Quiero decir, que si tu insertas un objeto de un documento pdf en un RTF y pulsas doble click te envia al visualizador de PDFs que tengas configurado por defecto, lo mismo hace con los documentos WORD. Es un "visor", por eso solo te muestra la primera página del documento.
Pero, igual funciona WORD. Si tu insertas un objeto PDF sólo te muestra la primera página y al dar doble click te abre el Adobe o el visualizador que tengas configurado.
En cuanto al problema que comentas, me he dado cuenta. Voy a darle unas vueltas a ver si veo donde puede estar el problema
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
Cristobal!!
Entendido perfectamente!! Gracias por responder!!
Si encuentras el porque del mensaje aleatorio te lo agradezco que lo compartas.
Un saludo grande!
Entendido perfectamente!! Gracias por responder!!
Si encuentras el porque del mensaje aleatorio te lo agradezco que lo compartas.
Un saludo grande!
Re: Ver PDF dentro de la aplicación
Cristobal buenos días
Primero que todo quiero darte gracias por toda la ayuda que brindas a la comunidad fw.
Por otro lado tengo la necesidad de mostrar un documento pdf completo, dentro de mi aplicación. Me podrías pegar una ayudita.
Saludos
Primero que todo quiero darte gracias por toda la ayuda que brindas a la comunidad fw.
Por otro lado tengo la necesidad de mostrar un documento pdf completo, dentro de mi aplicación. Me podrías pegar una ayudita.
Saludos
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Re: Ver PDF dentro de la aplicación
Este codigo me funciona en Win 10
Más informacion sobre los metodos
http://forums.fivetechsupport.com/viewt ... .1#p144617
Code: Select all
#include "Fivewin.ch"
Function Main()
local oWndPdf
local oPdf
DEFINE WINDOW oWndPdf TITLE "Visualizar/Imprimir PDF - Adobe Reader"
// oPdf := ShowPdf1( oWndPdf ) // Tambien funciona
ACTIVATE WINDOW oWndPdf MAXIMIZED ;
ON INIT ( oPdf := ShowPDF1( oWndPdf ) ) ;
VALID ( oPdf:End(), .T. )
Return nil
//----------------------------------------------------------------------------//
FUNCTION ShowPDF1( oWnd )
local oPdf
oPdf := TActiveX():New( oWnd, "AcroPDF.PDF.1" )
oPdf:nTop := 5
oPdf:nLeft := 5
oPdf:nWidth := 500 //
oPdf:nHeight := 700 //¿?
//oWnd:oClient := oPdf
//oWnd:oTop := oPdf
oWnd:oLeft := oPdf
//oWnd:oRight := oPdf
//oWnd:oBottom := oPdf
//oPdf:SetViewRect( 0, 0, 500, 600 )
//oPdf:Do( "SetShowToolbar", .T. )
oPdf:Do( "LoadFile", ".\SCINTILLA DOCUMENTATION.pdf" )
oPdf:Do( "SetCurrentPage", 1 )
oPdf:SetZoom( 80 )
RETURN oPdf
//----------------------------------------------------------------------------//
http://forums.fivetechsupport.com/viewt ... .1#p144617
Last edited by cnavarro on Fri May 19, 2017 7:22 pm, edited 1 time in total.
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
De nuevo gracias
Voy a hacer pruebas y comento.
Voy a hacer pruebas y comento.
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Ver PDF dentro de la aplicación
Hola Cristobal vi el visor de PDF que compartiste mas arriba con activeX, se puede hacer algo similar con un archivo de word?
Saludos
Saludos
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
Re: Ver PDF dentro de la aplicación
Hola Marcelo
Vamos por partes:
- Lo que utilizo para ver los ficheros .doc, o .xls es incrustar un objeto en un fichero .rtf, pero sólo, evidentemente te permite ver la primera página del documento
- Si lo que quieres es poder visualizar todo el documento .doc, lo que tienes que hacer es mediante un activex, convertir el .doc a .rtf ( duplicarlo ) y ya podrías ver todo el documento con un control RichEdt ( que es el que se utiliza para los documentos .rtf a la derecha del browse )
Vamos por partes:
- Lo que utilizo para ver los ficheros .doc, o .xls es incrustar un objeto en un fichero .rtf, pero sólo, evidentemente te permite ver la primera página del documento
- Si lo que quieres es poder visualizar todo el documento .doc, lo que tienes que hacer es mediante un activex, convertir el .doc a .rtf ( duplicarlo ) y ya podrías ver todo el documento con un control RichEdt ( que es el que se utiliza para los documentos .rtf a la derecha del browse )
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.
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Ver PDF dentro de la aplicación
Ante que nada gracias por tomarte el tiempo de responderme Cristobal, te cuento, tengo unos archivos en word .doc que utilizo de plantilla, la idea es utilizar richedit y me gustaria incrustar la edicion de esa plantilla dentro de una MDI, poder editarla y guardar el archivo .rtf
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
Re: Ver PDF dentro de la aplicación
Eso no es complicado
Creas un objeto, para abrir el fichero .doc
y buscas información sobre su método SaveAs, y los tipos de ficheros a los que puedes exportar
https://msdn.microsoft.com/es-es/librar ... 39952.aspx
Lo demás es incrustar el objeto TRichEdt5 en una mdi
Tienes un ejemplo en samples, aunque no sé si en tu versión de Fw lo tendrás
Cuando puedas actualízate a una versión más reciente: lo agradecerás
Creas un objeto, para abrir el fichero .doc
Code: Select all
oWord := CreateObject( "Word.Application" )
https://msdn.microsoft.com/es-es/librar ... 39952.aspx
Lo demás es incrustar el objeto TRichEdt5 en una mdi
Tienes un ejemplo en samples, aunque no sé si en tu versión de Fw lo tendrás
Cuando puedas actualízate a una versión más reciente: lo agradecerás
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.
- Marcelo Roggeri
- Posts: 275
- Joined: Sat Jul 22, 2006 9:04 pm
- Location: Venado Tuerto - Santa Fe -Argentina
- Contact:
Re: Ver PDF dentro de la aplicación
Buenísimo muchísimas gracias Cristobal por la ayuda y la información.
Saludos desde aquí.
Saludos desde aquí.
FWH - Harbour - BCC7 - PellesC - FivEdit (Cristobal Navarro)
- Andrés González
- Posts: 625
- Joined: Thu Jan 19, 2006 10:45 am
- Location: Mallorca
Re: Ver PDF dentro de la aplicación
Hola Cristobal, una colsulta del acroPDF.1, cuando ejecuto la aplicación desde código no puedo resaltar el texto para nada si la ejecuto desde el acrobat DC pro que tengo legal me funciona el mismo fichero sin problemas pero desde código no hay manera, puedo llegar a ver las herramientas de resaltado el típico foxfi pero esta en formato draf o sea difuminado, sabes si se puede desde codigo activar para poder ver la herramienta.
Code: Select all
DEFINE WINDOW oWnd TITLE x_title
oActiveX = TActiveX():New( oWnd, "AcroPDF.PDF.1" )
oWnd:oClient = oActiveX // To fill the entire window surface
//oActiveX:Do( "SetShowToolbar", .T. ) //esto no me muestra nada diferente
oActiveX:Do( "LoadFile", x_file )
oActiveX:Do( "SetCurrentPage", 1 )
ACTIVATE WINDOW oWnd MAXIMIZED
Saludos
Andrés González desde Mallorca
Andrés González desde Mallorca
Re: Ver PDF dentro de la aplicación
Hola Andrés
Lo primero que tienes que comprobar es si el activex para esa version se ha de crear con la misma clase
Inspecciona los objetos activex disponibles a ver si hay algún otro
Esta herramienta te puede servir
http://forums.fivetechsupport.com/viewt ... 60#p144732
Lo primero que tienes que comprobar es si el activex para esa version se ha de crear con la misma clase
Inspecciona los objetos activex disponibles a ver si hay algún otro
Esta herramienta te puede servir
http://forums.fivetechsupport.com/viewt ... 60#p144732
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.