PDA

Ver la Versión Completa : AcroPDF en Windows 7 64 bits


camino
02-02-2014, 14:57:56
En una aplicacion he tenido que guardar los archivos .PDF en la base de datos. Para mostrarlos uso el activex AcroPDF. Mientras trabaje en 32 bits no hubo problemas. Migre a windows 7 64 bits y no tuve problemas con Delphi y varios addons. Lamentablemente no me funciona el acroPDF. Consulte en los foros y en algunos señalan que AcroPDF solo funciona en 32 bits.
Si hay alguna solucion me gustaria saberla.

Uso Delphi 7 con windows 7 64 bits

Gracias.

radenf
02-02-2014, 16:25:51
Estimado camino:

Yo utilizo AcroPDF en Delphi2007 corriendo en Windows 7 Profesional de 64 bits y no me da ningún problema.
Recuerda que para que funcione debes tener instalado en tu PC el Adobe Reader.
La versión de AcroPDF.dll que yo utilizo es la 11.0.6.70. La encuentras en Archivos de programa(x86)/Common Files/Adobe/Acrobat/ActiveX.
Si lo tienes instalado quizás actualizando tu versión de Acrobat y el componente ActiveX puedas resolver el problema

Salu2

olbeup
02-02-2014, 21:36:10
Me pasa exactamente lo mismo, funciona en 32 pero no en 64, yo lo he resuelto creando de nuevo el objeto, es decir, en vez de coger y pegar el componente, lo creo en tiempo real y funciona para 64Bit sin ningún problema, que es un poco mas de trabajo, bueno, pero al final es que funcione.

Un saludo.

ecfisa
03-02-2014, 02:38:50
Hola.

Al igual que a radenf, el componente me funciona sin problemas con Delphi 7 en Windows 7, 8 y 8.1 de 64 bits. También tengo instalada la misma versión de AcroPDF.dll.

Saludos :)

camino
03-02-2014, 17:23:13
Al igual que radenf actualize mi Acrobat reader y el AcroPDF.dll que use es el 11.0.6.70
Lamentablemente no me resulta. Al ejecutarlo solo me muestra el componente vacio.
Le pido a olbeup que fuera tan gentil en indicarme como creo el componente en tiempo real para ver si asi resulta.

Gracias

ecfisa
03-02-2014, 18:34:22
Hola camino.

Un ejemplo para crear una instancia en tiempo de ejecución:

...
implementation

uses AcroPDFLib_TLB;

var
AcroPDF: TAcroPDF;

procedure TForm1.Button1Click(Sender: TObject);
begin
AcroPDF:= TAcroPDF.Create(Self);
with ACroPDF do
begin
Parent:= Panel1;
Align:= alClient;
LoadFile('Archivo.pdf');
SetFocus;
end;
end;


Saludos :)

olbeup
04-02-2014, 08:28:37
Hola camino,

El ejemplo de ecfisa, es suficiente claro, no lo hubiera explicado mejor.

Un saludo.

camino
04-02-2014, 18:46:33
Les estoy muy agradecido por sus soluciones, pero no se que esta mal, pero no puedo utilizar AcroPDF.
Delphi 7 esta instalado en c:\Archivos de Programa (x86)\Borland\Delphi7
AcroPDF.dll esta instalado en c:\Archivos de Programa (x86)\Common Files\Adobe\Acrobat\ActiveX
AcroPDF.dll version 11.0.06.70
Acrobat Reader XI

Creo que esta igual a como me lo han indicado.

Les pido ver que esta mal

Gracias

radenf
04-02-2014, 19:17:14
Estimado camino:

Todo eso está correcto.
Imagino que importaste el componente AcroPdf y que aparece en la pestaña ActiveX, para que lo puedas incorporar en tu form.
También que el AcroPDFLib_TLB se encuentra en el uses de tu Form.
Con esto bastaría que para llamar el archivo Pdf utilizaras el siguiente código:

begin
OpenDialog1.Filter:= 'Archivos PDF (*.pdf)|*.pdf';
if OpenDialog1.Execute then
if OpenDialog1.FileName= '' then
exit
else
begin
AcroPdf1.src:= OpenDialog1.FileName;
AcroPdf1.GoToFirstPage;
AcroPdf1.SetShowToolbar(True);
AcroPdf1.setShowScrollbars(True);
end;
end;

o bien el código que gentilmente ha colocado ecfisa
Ojalá puedas solucionar tu problema.

Salu2

camino
05-02-2014, 19:47:28
Saludos.
He reinstalado Adobe Acrobat en la misma version de mi post anterior.Como no resulta les adjunto la Form que ejecuta el display del archivo PDF.
La variable global ArchivoPDF contiene el path y el nombre del archivo PDF que en una instancia anterior fue creado en c:\





unit Pdf;

interface

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

type
TPdfForm = class(TForm)
AcroPDF1: TAcroPDF;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
PdfForm: TPdfForm;

implementation



Uses UnitGlobal;



{$R *.dfm}


procedure TPdfForm.FormActivate(Sender: TObject);
begin
AcroPdf1.LoadFile(ArchivoPdf);
AcroPdf1.setShowToolbar(true);
end;

procedure TPdfForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SysUtils.DeleteFile(ArchivoPDF);
ArchivoPdf := '';
end;


end.




y este es el resultado de la rutina:



2844


El tamaño no es el real ya que tuve que reducirlo por la limitacion de peso.

Como pueden ver lo he hecho tal como Uds. lo harian sin embargo, no funciona



Gracias

radenf
05-02-2014, 21:10:54
Estimado Camino:

Como puedo ver en tu imagen, estás cargando el componente AcroPdf pero no el archivo, por lo que creo que el problema esta en la generación de la variable ArchivoPDF.
Por qué no pruebas con una ruta a un archivo conocido utilizando el código que te envié, con un OpenDialog, que te permita seleccionar cualquier archivo Pdf desde tu disco duro.
Por si acaso AcroPdf1.src:= (ArchivoPdf); hace mejor la misma función que AcroPdf1.LoadFile(ArchivoPdf);
Te sugiero que además utilices el evento onShow en vez de OnActivate.

Salu2

ecfisa
05-02-2014, 23:49:56
Hola.

Estoy de acuerdo con radenf. Y basta con agregar unas pocas líneas para comprobar que es un error de tipeo en la constante (o variable) "ArchivoPdf" o que el archivo fué eliminado:

...
if FileExists(ArchivoPdf) then
AcroPDF1.LoadFile(ArchivoPdf)
else
raise Exception.Create('El archivo no existe o escribió mal el nombre o la ruta al mismo');
...


Saludos :)

radenf
15-05-2014, 23:35:24
Hoy he podido comprobar que el componente ActiveX AcroPdf ha dejado de funcionar, enviando un mensaje de AccessViolation al abrir cualquier formulario que lo contenga.
La razón, cambios inducidos por la última actualización automática de Adobe Reader XI.
Al restaurar el sistema el componente ActiveX AcroPdf vuelve a funcionar como si nada y deja de hacerlo al actualizarse automáticamente el Adobe Reader.
¿Alguien tiene alguna información al respecto?
¿Es posible corregir este problema, ya que puede impedir el funcionamiento de programas que utilizen el componente?
De antemano agradezco cualquier información o ayuda.
Saludos

Casimiro Notevi
17-05-2014, 15:51:06
Sigue aquí: http://www.clubdelphi.com/foros/showthread.php?p=476553#post476553

bitbow
04-06-2014, 18:58:09
Hola, por alguna causa el componente AcroPdf es dependiente de la version de Adobe Reader con que lo creaste, es necesario que tengas la misma version con que lo compilaste en el equipo donde lo instalaras, tambien deshabilita las actualizaciones automaticas para que la version no cambie.

Saludos.

achamorroi
04-12-2014, 15:52:47
Numero := DM_ADO_GD.ADO_b_guia_despacho.FieldByName('Numero_Guia').AsString;
AcroPDF1.LoadFile('\\servidor\Servidor-GDespacho\'+Numero+'.pdf');

en el evento oncreate

nlsgarcia
04-12-2014, 17:07:57
achamorroi,

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php)

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.