PDA

Ver la Versión Completa : Abrir PDF y esperar a que termine


mjjj
05-09-2012, 01:29:38
Estimados, estoy con aplicación que abre archivos pdf que estan guardados en una BF Firebird 2.5.
La rutina es esta


begin
i := 0;
while i <> -1 do
begin
inc(i);
filename := 'C:\documento_'+inttostr(i)+'.pdf';
if not FileExists(fileName) then i:=-1;
end;
TBlobField(ibquery2.FieldByName('pdf')).SaveToFile(filename);
ShellExecute(factura_revisarform.Handle,nil,PChar(filename),'','',sw_shownoactivate);
end;


Revisa que no exista el archivo documento_x, y una vez que no lo encuentra lo guarda y en seguida lo abre. Esto funciona sin problema, pero al cabo de un tiempo tengo muchisimos: por ejemplo documento_10000.

El se podría resolver detectando cuando se cierra el pdf y eliminar el archivo.
Se les ocurre alguna otra idea, se podra guardar en memoria y abrir sin tener que guardarlo necesariamente en el disco? esta es la idea que mas me gusta, pero no se como ni si se puede hacer!!

Espero me puedan ayudar.

roman
05-09-2012, 17:44:10
Desconozco si existe alguna forma de visualizar el pdf sin guardarlo previamente en disco, pero lo que sí puedes hacer es usar el control ActiveX de Acrobat que se instala cuando instalas el Acrobat Reader. Lo importas a delphi usando el menú Component|Install ActiveX Control. Con este control puedes visualizar el documento dentro de tu aplicación y así tienes control de cuándo se cierra y sabes cuándo borra el archivo.

// Saludos

mjjj
05-09-2012, 18:50:41
Gracias Roman, funciono perfecto. Sin embargo, cuando distribuyo la aplicación no corre en otros PC. Copie la libreria (adobe.bpl) del componente y sigue sin ejecutarse. No arroja ningún error, simplemente no se ejecuta.

Como podre solucionar esto?

ElKurgan
06-09-2012, 07:39:10
Gracias Roman, funciono perfecto. Sin embargo, cuando distribuyo la aplicación no corre en otros PC. Copie la libreria (adobe.bpl) del componente y sigue sin ejecutarse. No arroja ningún error, simplemente no se ejecuta.

Como podre solucionar esto?

Porque el bpl es de Delphi, pero en los equipos tiene que estar instalado o registrado el Active X de Adobe.

Un saludo

roman
06-09-2012, 17:03:16
Así es, como dice ElKurgan, debes tener instalado el Acrobat Reader, lo que no es inusual. Otros visors de PDFs, como Foxit (http://www.foxitsoftware.com/Secure_PDF_Reader/addons.php), también incluyen un control ActiveX.

// Saludos