Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2014
adls65 adls65 is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 14
Poder: 0
adls65 Va por buen camino
Question Consultar un Archivo PDF en una Forma

Hola, como puedo hacer una consulta de un Archivo PDF dentro de mi aplicacion (solo abrir el archivo PDF, no modificar) en una forma independiente, encontre aqui mismo en el CLUB lo siguiente:

ShellExecute(nombre_del_form.Handle,nil,PChar('c:\archivo.pdf'),'','',SW_SHOWNORMAL);

y si funciona , pero me abre el PDF como si lo ejecutara desde windows, normal.

Tengo DELPHI 6 y el Sistema Operativo WIN 7 PRO.

Muchas Gracias.
Responder Con Cita
  #2  
Antiguo 07-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola adls65.

Busca en los foros por el componente TAcroPDF que realiza justamente lo que deseas.

Aquí los pasos para agregarlo: Use Adobe Acrobat (PDF) Files in a Delphi Application

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 08-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimados adls65 y ecfisa:

El componente TAcroPDF ya no tiene soporte para aplicaciones de 32 bits y genera un AccessViolation con la última versión de Adobe Reader.
Yo no recomiendo utilizarlo hasta que Adobe solucione el problema de compatibilidad y al parecer no pretenden hacerlo.
De hecho el código que muestra adls65 es el adecuado para visualizar archivos PDF, ya que es la API de Windows quien se encarga de lidiar con el visor PDF determinado del sistema.
Para más información en estos links:

http://helpx.adobe.com/acrobat/kb/vb...sue-11007.html

https://forums.adobe.com/message/6400765#6400765

Saludos
Responder Con Cita
  #4  
Antiguo 08-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola radenf.

No estaba al tanto, gracias por el dato

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 08-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Leyendo los enlaces que amablemente nos facilitó radenf, vi la sugerencia de reemplazar por un TWebBrowser para mostrar el archivo .pdf dentro de un form. Y pude comprobar que lo hace correctamente en Win 32 y Adobe Reader v 11.0.07.79.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 08-07-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
adls65,

Cita:
Empezado por adls65
...como puedo hacer una consulta de un Archivo PDF dentro de mi aplicación...
Revisa este código:
Código Delphi [-]
 unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, OleCtrls, SHDocVw;
 
 type
   TForm1 = class(TForm)
     WebBrowser1: TWebBrowser;
     Button1: TButton;
     Button2: TButton;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
 
 var
   Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 
 // Load PDF Files
 procedure TForm1.Button1Click(Sender: TObject);
 var
    openDialog : TOpenDialog;    // Open dialog variable
 begin
    openDialog := TOpenDialog.Create(self);
    openDialog.InitialDir := GetCurrentDir;
    openDialog.Options := [ofFileMustExist];
    openDialog.Filter := 'PDF files|*.pdf';
    openDialog.FilterIndex := 1;
    if openDialog.Execute then
       WebBrowser1.Navigate('file://' + openDialog.FileName);
 end;
 
 // UnLoad PDF Files
 procedure TForm1.Button2Click(Sender: TObject);
 begin
    WebBrowser1.Stop;
 end;
 
 end.
El código anterior en Delphi7 sobre Windows 7 x32, visualiza archivos PDF en el componente TWebBrowser como se muestra en la siguiente imagen:



Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #7  
Antiguo 08-07-2014
adls65 adls65 is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 14
Poder: 0
adls65 Va por buen camino
Agradecimiento

Quiero agradecer a radenf, ecfisa y nlsgarcia por sus amables comentarios asi como de tomarse el tiempo para ayudarme, la opcion de nlsgarcia me funciono exactamente para mis necesidades.

Muchas gracias al CLUB y a uds principalmente.
Responder Con Cita
  #8  
Antiguo 12-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Leyendo los enlaces que amablemente nos facilitó radenf, vi la sugerencia de reemplazar por un TWebBrowser para mostrar el archivo .pdf dentro de un form. Y pude comprobar que lo hace correctamente en Win 32 y Adobe Reader v 11.0.07.79.
En Windows7 64 bits el uso del WebBrowser con el código de nlsgarcia no me funciona con la última versión de Adobe Reader y congela la aplicación.
Saludos
Responder Con Cita
  #9  
Antiguo 12-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por radenf Ver Mensaje
En Windows7 64 bits el uso del WebBrowser con el código de nlsgarcia no me funciona con la última versión de Adobe Reader y congela la aplicación.
Saludos
Hola radenf.

No tuve oportunidad de probarlo en W 64 bits, pero ya enterado de tu prueba, la solución para ambas plataformas debe ser ShellExcecute como comentaste anteriormente.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 12-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje

No tuve oportunidad de probarlo en W 64 bits, pero ya enterado de tu prueba, la solución para ambas plataformas debe ser ShellExcecute como comentaste anteriormente.
Es la única que a mí me funciona.
Otra opción que probé es utilizar un OleContainer, que abre casi cualquier archivo, pero desafortunadamente no logré redimensionar el archivo Pdf y la calidad de la visualización no terminó de gustarme.
Saludos
Responder Con Cita
  #11  
Antiguo 12-07-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
radenf,

Cita:
Empezado por radenf
...En Windows 7 64 bits el uso del WebBrowser con el código de nlsgarcia no me funciona con la última versión de Adobe Reader y congela la aplicación...
Te comento:

1- El código propuesto en el Msg #6 no funciona correctamente en Delphi 7 bajo Windows 7 Professional x64 y Acrobat Reader 11.0.03

2- Si se compila el código propuesto en el Msg #6 en Delphi 7 bajo Windows 7 Professional x32 y se ejecuta en Windows 7 Professional x64 funciona correctamente.

3- El código propuesto en el Msg #6 funciona correctamente en Delphi 2010 bajo Windows 7 Professional x64 y Acrobat Reader 11.0.03

4- El código propuesto en el Msg #6 funciona correctamente en Delphi XE4 bajo Windows 7 Professional x64 y Acrobat Reader 11.0.03 si se compila en 32 Bits y no funciona correctamente si se compila en 64 Bits.

Pregunto:

1- ¿Puedes compilar en 32 Bits y ejecutar en 64 Bits el código propuesto en el Msg #6?.

2- ¿Que versión de Delphi utilizas?.

3- ¿Probastes el código propuesto en el Msg #10 del hilo
ActiveX AcroPdf no funciona?

Espero sea útil

Nelson.
Responder Con Cita
  #12  
Antiguo 12-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimado Nelson:

Los problemas que yo he detectado se producen sólo con la última versión de Adobe Reader 11.0.07, que es la que incluye AcroPdf.dll y AcroPdf64.dll y no con las versiones anteriores. Según la gente de Adobe el componente AcroPdf no sería capaz de seleccionar la dll adecuada y eso provocaría los fallos, situación que al parecer no piensan corregir, ya que no pretenden seguir dando soporte a sistemas de 32 bits.

Respondiendo tus preguntas:

1. Siempre compilo en 32 bits, con Delphi instalado sobre Windows7 Profesional de 64 bits (No tengo posibilidad de utilizar Windows de 32 bits).
2. Utilizo Delphi 2007.
3. Probé tu código propuesto en el Msg #10 del hilo ActiveX AcroPdf no funciona, pero no me gustó que el AcrobatReader se abriera dentro de un form.

Finalmente opté por utilizar el siguiente código, que me ha funcionado bien, sin importar la versión de Adobe Reader:

Código Delphi [-]
ShellExecute(Application.Handle,'', PChar(DBEditInforme.Text), nil,nil,SW_SHOW);

Muchas gracias por tus aportes y sugerencias.
Saludos
Responder Con Cita
  #13  
Antiguo 13-07-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
radenf,

Cita:
Empezado por radenf
...Probé tu código propuesto en el Msg #10...pero no me gustó que el Acrobat Reader se abriera dentro de un form...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, AcroPDFLib_TLB, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    AcroPDF1: TAcroPDF;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   if OpenDialog1.Execute then
      AcroPDF1.LoadFile(OpenDialog1.FileName);
end;

end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32 y x64, permite visualizar un documento PDF por medio del componente TAcroPDF de Adobe Reader 11.0.07, sin embargo en Delphi 2010 y Delphi XE4 bajo Windows 7 Professional x32 y x64 da el siguiente error :



Según entiendo el mismo error se presenta en Delphi 2007, sin embargo es interesante el hecho de que en Delphi 7 el componente funciona correctamente según lo esperado.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-07-2014 a las 03:16:45.
Responder Con Cita
  #14  
Antiguo 13-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias Nelson.
Saludos
Responder Con Cita
  #15  
Antiguo 13-07-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Cita:
Empezado por radenf Ver Mensaje
En Windows7 64 bits el uso del WebBrowser con el código de nlsgarcia no me funciona con la última versión de Adobe Reader y congela la aplicación.
Saludos
Me corrijo.
Para que funcione el código, en el WebBrowser1 debe colocarse la propiedad Silent:= True;

Saludos
Responder Con Cita
  #16  
Antiguo 13-07-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
radenf,

Cita:
Empezado por radenf
...Para que funcione el código, en el WebBrowser1 debe colocarse la propiedad Silent:= True...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Load PDF Files
procedure TForm1.Button1Click(Sender: TObject);
var
   openDialog : TOpenDialog;
begin
   openDialog := TOpenDialog.Create(self);
   openDialog.InitialDir := GetCurrentDir;
   openDialog.Options := [ofFileMustExist];
   openDialog.Filter := 'PDF files|*.pdf';
   openDialog.FilterIndex := 1;
   if openDialog.Execute then
   begin
      WebBrowser1.Silent := True;
      WebBrowser1.Navigate('file://' + openDialog.FileName);
   end;
end;

// UnLoad PDF Files
procedure TForm1.Button2Click(Sender: TObject);
begin
   WebBrowser1.Stop;
end;

end.
El código anterior en Delphi7, Delphi 2010 y Delphi XE4 sobre Windows 7 Professional x32 y x64, visualiza archivos PDF en el componente TWebBrowser.

Nota del Msg #13 : El componente TAcroPDF de Adobe Reader 11.0.07, funciona en Delphi 7 solo si es ejecutado directamente desde el ejecutable, en modo Debug no funciona.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-07-2014 a las 17:01:56.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
buscando componente o forma de consultar hardware del sistema vroa74 Varios 5 11-07-2013 07:17:00
Como abro y despliego un archivo de Office en una Forma en Delphi 7??? Saltamontes Servers 1 08-07-2007 20:52:55
Respaldar Tablas (en forma de archivo) enviandola a una unidad de disco MaSSaKKre Varios 3 04-11-2005 20:53:53
Consultar un archivo .xls mgiorno Tablas planas 0 11-06-2005 17:06:45
Consultar tamaño de archivo en servidor jpep Internet 0 09-08-2003 14:20:04


La franja horaria es GMT +2. Ahora son las 06:43:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi