Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   AcroPDF en Windows 7 64 bits (https://www.clubdelphi.com/foros/showthread.php?t=85122)

camino 02-02-2014 14:57:56

AcroPDF en Windows 7 64 bits
 
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

AcroPDF en windows 7 64 bits
 
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:
Código Delphi [-]
...
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

AcroPDF en windows 7 64 bits
 
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:

Código Delphi [-]
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

AcroPDF en windows 7 64 bits
 
1 Archivos Adjunto(s)
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:\




Código Delphi [-]
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:



Archivo Adjunto 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:
Código Delphi [-]
...
  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/show...553#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

Código Delphi [-]
   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

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

Saludos,

Nelson.


La franja horaria es GMT +2. Ahora son las 09:04:55.

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