Amigos foreros:
Es posible cargar una archivo .PDF y mostrarlo en una dialogo?, he buscado aquí en el foro pero
los ejemplos son con .BMP, .JPG, etc., cuando trato de ajustarlo a .PDFs no lo logro.
Saludos
FUNCTION VerPDFF(cFichero)
Local oDlg,cFicheroo,oActiveX
oQry := TDolphinQry():New( "SELECT * FROM polizario order by archivo" )
DEFINE DIALOG oDlg RESOURCE "DIALOGPDF" TITLE "POLIZA EN FORMATO PDF--->"+" "+ oQry:poliza
oDlg:lHelpIcon:=.F.
REDEFINE ACTIVEX oActiveX ID 800 OF oDlg PROGID "AcroPDF.PDF.1"
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oActiveX:Do( "LoadFile", ALLTRIM(cFichero) ),oActiveX:Do( "SetCurrentPage", 1 ) ) //NOMODAL
RETURN NIL
// USANDO o ADOBE READER - 25/11/2013 - DIRETO VIA FIVEWIN 13.06
FUNCTION ShowPDF_READER( cAlias )
LOCAL oWndPdf, oPdf, cTmp, NFEVisualSUM, nNumNfeSUM, nRecNo, oTaskP
nRecNo := ( cAlias )->( RecNo() ) //-> CCE.DBF
GoTo( nRecNo )
nNumNfeSUM := VAL( SUBSTR( ( cAlias )->CHAVE, 29, 6 ) )
NFEVisualSUM := "C:\NFEPDF\"+"CCE"+ALLTRIM( STR( nNumNfeSUM ) )+".PDF"
MsgWait( "LOCALIZANDO O ARQUIVO DA CARTA DE CORRECAO", ;
"AGUARDE UM MOMENTO POR FAVOR... ", 1.5 )
// USANDO ADOBE READER DIRETO VIA CODIGO - ACTIVEX DO FWH13.06 - 26/11/2013
IF .NOT. FILE( NFEVisualSUM )
RETURN NIL
ENDIF
DEFINE WINDOW oWndPdf TITLE "FiveWin ActiveX Support - Visualizar/Imprimir o *.PDF Usando o Adobe Reader"
oPdf := TActiveX():New( oWndPdf, "AcroPDF.PDF.1" )
oWndPdf:oClient := oPdf
oPdf : src = NFEVisualSUM
// Mostra Preview Pequeno no lado esquerdo da tela...
// oPdf:Do( "SetPageMode", "thumbnail and pages" )
oPdf:SetProp( "Src", cTmp )
oPdf:Do( "LoadFile", Lfn2Sfn(cTmp) )
oPdf:Do( "GetVersions" )
oPdf:Do( "SetCurrentPage", 1 )
// oPdf:Print() // Nao funciona direto na impressora..
// Mostra a Barra de Botoes do ADOBE READER
oPdf:Do( "SetShowToolbar", .T. )
// Liga/Desliga barra de Scroll do lado direto do Adobe Reader
oPdf:Do( "SetShowScrollbars", .T. ) // Liga/Desliga Scroll
ACTIVATE WINDOW oWndPdf MAXIMIZED ;
ON INIT( PDFActivex( oPdf ) ) ; // EM CARTA.PRG
VALID( oWndPdf := NIL, oPdf:End(), .T. )
RETURN NIL
FUNCTION PDFActivex( MyProgID )
LOCAL adretor := .T.
if IsActivex( "PDF.PdfCtrl.1" ); MyProgID := "PDF.PdfCtrl.1"; endif
if IsActivex( "PDF.PdfCtrl.2" ); MyProgID := "PDF.PdfCtrl.2"; endif
if IsActivex( "PDF.PdfCtrl.3" ); MyProgID := "PDF.PdfCtrl.3"; endif
if IsActivex( "PDF.PdfCtrl.4" ); MyProgID := "PDF.PdfCtrl.4"; endif
if IsActivex( "PDF.PdfCtrl.5" ); MyProgID := "PDF.PdfCtrl.5"; endif
if IsActivex( "PDF.PdfCtrl.6" ); MyProgID := "PDF.PdfCtrl.6"; endif
if IsActivex( "PDF.PdfCtrl.7" ); MyProgID := "PDF.PdfCtrl.7"; endif
if IsActivex( "acroPDF.PDF.1" ); MyProgID := "acroPDF.PDF.1"; endif
if IsActivex( "acroPDF.PDF.2" ); MyProgID := "acroPDF.PDF.2"; endif
IF Empty( MyProgID )
MsgInfo( "PDF Activex não instalado !!!"+CRLF+" É necessário que seja instalado o programa ADOBE READER, consulte o suporte do sistema.",.F.)
adretor := .F.
ENDIF
RETURN(adretor)
STATIC FUNCTION ShowPDF_READER()
LOCAL oWndPdf, oPdf, cTmp, cFilePdf
cFilePdf := oApp:cPathAdj + ALLTRIM(oRsAdj:Fields("ADJ_FIL"):Value) // Tomo el nombre del archivo PDF de una tabla
IF .NOT. FILE(cFilePdf)
MsgInfo("No existe el archivo que desea mostrar !",oApp:cAlicacion)
RETURN(.F.)
ENDIF
DEFINE WINDOW oWndPdf TITLE "Soporte ActiveX - Visualizar un achivo *.PDF Usando Adobe Reader"
oPdf := TActiveX():New( oWndPdf, "AcroPDF.PDF.1" )
oWndPdf:oClient := oPdf
oPdf:Src := cFilePdf
// Muestra una vista previa pequeña en el lado izquierdo de la ventana
// oPdf:Do( "SetPageMode", "thumbnail and pages" )
oPdf:SetProp( "Src", cTmp )
oPdf:Do( "LoadFile", Lfn2Sfn(cTmp) )
oPdf:Do( "GetVersions" )
oPdf:Do( "SetCurrentPage", 1 )
// Muestra la barra de botones de ADOBE READER
oPdf:Do( "SetShowToolbar", .T. )
// Liga/Desliga barra de Scroll do lado direto do Adobe Reader
oPdf:Do( "SetShowScrollbars", .T. ) // Liga/Desliga Scroll
ACTIVATE WINDOW oWndPdf MAXIMIZED ON INIT(PDFActivex( oPdf )) VALID(oWndPdf := NIL, oPdf:End(), (.T.))
RETURN NIL
/*
============================================================================
============================================================================
*/
FUNCTION PDFActivex( MyProgID )
if IsActivex( "PDF.PdfCtrl.1" ); MyProgID := "PDF.PdfCtrl.1"; endif
if IsActivex( "PDF.PdfCtrl.2" ); MyProgID := "PDF.PdfCtrl.2"; endif
if IsActivex( "PDF.PdfCtrl.3" ); MyProgID := "PDF.PdfCtrl.3"; endif
if IsActivex( "PDF.PdfCtrl.4" ); MyProgID := "PDF.PdfCtrl.4"; endif
if IsActivex( "PDF.PdfCtrl.5" ); MyProgID := "PDF.PdfCtrl.5"; endif
if IsActivex( "PDF.PdfCtrl.6" ); MyProgID := "PDF.PdfCtrl.6"; endif
if IsActivex( "PDF.PdfCtrl.7" ); MyProgID := "PDF.PdfCtrl.7"; endif
if IsActivex( "acroPDF.PDF.1" ); MyProgID := "acroPDF.PDF.1"; endif
if IsActivex( "acroPDF.PDF.2" ); MyProgID := "acroPDF.PDF.2"; endif
IF Empty( MyProgID )
MsgInfo( "PDF Activex no instalado !" + CRLF + " Es necesario que sea instalado el programa ADOBE READER, consulte a suporte de sistemas.",oApp:cAplicacion)
RETURN(.F.)
ENDIF
RETURN(.T.)
Application
===========
Path and name: C:\SarWin\SarWin.Exe (32 bits)
Size: 2,048,512 bytes
Time from start: 0 hours 0 mins 11 secs
Error occurred at: 26/02/2014, 11:24:46
Error description: Error BASE/1005 Message not found: TACTIVEX:_SRC
Stack Calls
===========
Called from: source\rtl\tobject.prg => TACTIVEX:ERROR(172)
Called from: source\rtl\tobject.prg => TACTIVEX:MSGNOTFOUND(205)
Called from: source\rtl\tobject.prg => TACTIVEX:_SRC(0)
Called from: C:\SarWin\Source\SarWin1b.Prg => SHOWPDF_READER(1039)
Called from: C:\SarWin\Source\SarWin1b.Prg => (b)EDITAR(652)
Called from: .\source\classes\WINDOW.PRG => TWINDOW:LDBLCLICK(0)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:LDBLCLICK(0)
Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:LDBLCLICK(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\CONTROL.PRG => TXBROWSE:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => DIALOGBOX(0)
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE(0)
Called from: C:\SarWin\Source\SarWin1b.Prg => EDITAR(688)
Called from: C:\SarWin\Source\SarWin1b.Prg => (b)LABARRA(462)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK(0)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT(0)
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
Called from: C:\SarWin\Source\SarWin.Prg => MAIN(125)
System
======
CPU type: Intel(R) Pentium(R) CPU G645 @ 2.90GHz 2900 Mhz
Hardware memory: -311 megs
Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %
Compiler version: xHarbour build 1.1.0 Intl. (SimpLex) (Rev. 6195)
Windows version: 6.2, Build 9200
Windows total applications running: 60
1 MSCTFIME UI
2 Default IME
3 GDI+ Window
4 Conmutación de tareas
5 RFLed
6 HPBeatsOSD
7 Network Flyout
8 Adobe Reader
9 Soporte ActiveX - Visualizar un achivo *.PDF Usando Adobe Reader
10 sw
11 DDE Server Window
12 transport Window
13 _acroT_win
14 _acroS_win
15 Consulta a solicitud
16 © 2014 Sistema para Administrar Requisiciones Build 26/Feb/2014 localhost
17 xMate - C:\SarWin\SarWin.xhp
18 MED CX - [C:\SarWin\Source\SarWin1b.Prg]
19 Debug window C:\SarWin\SarWin.Exe (0 errors, 0 warnings)
20 Skype™ - aresbu@outlook.com
21 100% completado
22 JavaUpdate SysTray Icon
23 CWNPTransportImpl
24 DPHelper
25 WinAMRestoreWnd
26 HelperMsgListenerWnd
27 About
28 LED HOTKEY SETUP-HPID09
29 LED HOTKEY KEYBOARD-HPID09
30 HIDUSBKEYMSG
31 PDI_Status_Indicator_Window
32 PDI_DTPopupMgr_Wnd
33 BATTERY INDICATOR - HPID09
34 OSD Manager
35 HIDList 2.20.00 (Release)
36 CLML Window
37 C:\Users\Armando\AppData\Roaming\Skype
38 Microsoft Office OneNote 2007 - Barra de tareas de Windows
39 Sigmatel-IDT-SysTray
40 PersistWndName
41 HkWndName
42 MS_WebcheckMonitor
43 BluetoothNotificationAreaIconWindowClass
44 Windows Push Notifications Platform
45 Medidor de la batería
46 Microsoft-Windows-CDesktopAppSpaceElement-4BF42B71-EA88-489E-917F-495A116C3596
47 FWSesAlWndTitle
48 SYM_AVPAPP_WINDOW_NAME_{1BE293D4-E7AD-4314-B8C9-C088A7CC1E69}
49 {2E534F4D-897B-467E-92EF-604ABD3D1C5D}
50 ccSvcHst
51 Task Host Window
52 EXPLORER
53 HP My Display
54 {94F11419-869E-47aa-9563-F48591285CAD}
55 IgfxExt_Wnd_Name
56 Portrait Display SDK Helper for 64 bits OS
57 HookManager
58 Malwarebytes Anti-Malware
59 DWM Notification Window
60 Program Manager
Variables in use
================
Procedure Type Value
==========================
TACTIVEX:ERROR
Param 1: C "Message not found"
Param 2: C "TACTIVEX"
Param 3: C "_SRC"
Param 4: N 1005
Local 1: U
Local 2: O Class: TACTIVEX
Local 3: N 16
TACTIVEX:MSGNOTFOUND
Param 1: C "_SRC"
Param 2: O Class: TACTIVEX
TACTIVEX:_SRC
Param 1: C ".\Adjuntos\FACTURA DV91790.PDF"
SHOWPDF_READER
Local 1: O Class: TWINDOW
Local 2: O Class: TACTIVEX
Local 3: U
Local 4: C ".\Adjuntos\FACTURA DV91790.PDF"
(b)EDITAR
Param 1: N 39
Param 2: N 94
Param 3: N 1
Param 4: O Class: TXBROWSE
oBrx:bKeyDown := { | nKey, nFlags | IIF(nKey == VK_DELETE,DltAdj(oDlg,oBrx),)}
oBrx:blDblClick := { | nRow, nCol, nKey | MsgInfo("YES")}
#include "FiveWin.ch"
#include "xbrowse.ch"
function Main()
local oDlg, oBrw, nKey := VK_RETURN
DEFINE DIALOG oDlg SIZE 300, 200
@ 0, 0 XBROWSE oBrw OF oDlg ARRAY { { "one","two","three" } } AUTOCOLS
oBrw:CreateFromCode()
oBrw:bKeyDown = { | nKey, nFlags | IIF( nKey == VK_DELETE, DltAdj( oDlg, oBrw ), ) }
oBrw:bLDblClick = { | nRow, nCol, nFlags | MsgInfo( "Left Doble Click" ) }
ACTIVATE DIALOG oDlg CENTER ON INIT ( oDlg:oClient := oBrw, oDlg:Resize() )
return nil
Static function DltAdj( oDlg, oBrw )
? "Wow... Go on..."
oBrw:Refresh()
Return Nil
oBrx:=TxBrowse():New(oFld:aDialogs[2])
oBrx:nMarqueeStyle := MARQSTYLE_HIGHLROW // Con cursor de todo el renglón
oBrx:nColDividerStyle := LINESTYLE_LIGHTGRAY
oBrx:nRowDividerStyle := LINESTYLE_LIGHTGRAY
oBrx:lColDividerComplete := (.F.) // (.T.) Matiene siempre llena la pantalla
oBrx:nHeaderHeight := 25 // Altura de los encabezados
oBrx:nRowHeight := 22 // Altura del renglón
oBrx:nHeaderLines := 1 // Número de líneas de encabezados
oBrx:nDataLines := 1 // Número de líneas de detalle
oBrx:nFooterHeight := 20 // Altura del footer
oBrx:nFooterLines := 1 // Número de líneas en el footer
oBrx:lFooter := (.T.) // Sí queremos línea de footer
oBrx:lHScroll := (.F.) // Quitamos el scroll horizontal
oBrx:bChange := { || PonImagen(oFld,oBrx,oImagen) }
aCols[ 1] := oBrx:AddCol()
aCols[ 1]:bStrData := { || IF(oRsAdj:RecordCount() > 0,oRsAdj:Fields("ADJ_FIL"):Value,SPACE(1))}
aCols[ 1]:cHeader := "Nombre del archivo"
aCols[ 1]:nHeadStrAlign := AL_LEFT
aCols[ 1]:nDataStrAlign := AL_LEFT
aCols[ 1]:nWidth := 70
oBrx:blDblClick := { | nRow, nCol, nKey | MsgInfo("YES")}
oBrx:l2007 := (.F.)
oBrx:nStretchCol := STRETCHCOL_LAST
oBrx:bClrHeader := { || {CLR_WHITE,CLR_BLACK} }
oBrx:bClrStd := { || {CLR_BLACK,CLR_WHITE} }
oBrx:bClrFooter := { || {CLR_WHITE,CLR_BLACK} }
oBrx:nRecSelColor := oApp:nRowParClr // Triangulo de selección
oBrx:bClrSel := { || {CLR_BLACK,CLR_WHITE} }
oBrx:bClrSel := {|| IF( oRsAdj:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
oBrx:bClrSelFocus := { || {oApp:nFClrFocus,oApp:nBClrFocus} }
oBrx:bGoTop := { || IF( ! oRsAdj:BOF() .AND. ! oRsAdj:EOF(), oRsAdj:MoveFirst(), ) }
oBrx:bGoBottom := { || IF( ! oRsAdj:BOF() .AND. ! oRsAdj:EOF(), oRsAdj:MoveLast(), ) }
oBrx:bBof := { || oRsAdj:BOF() }
oBrx:bEof := { || oRsAdj:EOF() }
oBrx:bBookMark := { | uBm | IF( oRsAdj:BOF() .AND. oRsAdj:EOF(), 0, IF( uBm == NIL, oRsAdj:BookMark, oRsAdj:BookMark := uBm ) ) }
oBrx:bKeyNo := { | n | IF( oRsAdj:BOF() .AND. oRsAdj:EOF(), 0, IF( n == NIL, oRsAdj:AbsolutePosition, oRsAdj:AbsolutePosition := n ) ) }
oBrx:bKeyCount := {|| oRsAdj:RecordCount() }
oBrx:SetAdo(oRsAdj)
oBrx:bClrStd := {|| IF( oRsAdj:AbsolutePosition % oApp:nRowsInt == 0 ,{ CLR_BLACK, oApp:nRowParClr },{ CLR_BLACK, oApp:nRowNonClr }) }
oBrx:nRecSelColor := oApp:nRowParClr
oBrx:CreateFromResource(201)
aCols[ 1]:bLDClickData := { | nRow, nCol, nKeyFlags, oColumn | .......... }
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 50 guests