Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2007
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
OleAutomation con Acrobat Profesional

Estoy tratando de automatizar la gestión de impresos en formato PDF desde mi aplicación. Básicamente hago lo siguiente: Abro en un olecontainer un formulario pdf, lo cubro y lo guardo en una base de datos, para poder abrirlo en otras ocasiones.
Mi problema es que cuando cierro el olecontainer la aplicación acrobat tarda unos segundos en descargarse, por lo que si intento abrir un nuevo documento me lo abre como no editable (En ganulado gris). Busco un sistema que me permita controlar si ya se cerro la aplicación Acrobat.
Responder Con Cita
  #2  
Antiguo 30-10-2007
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
Bueno. He conseguido abrir pdfs embebidos en mi formulario
Código Delphi [-]
  Clase:='AcrobatSDIWindow';
  Extension:='pdf';
  OleDoc:= TOleContainer.Create(self);
  OleDoc.Parent:=PDoc;
  OleDoc.Align:=alClient;
  OleDoc.AutoActivate:=aaManual;
  OleDoc.AutoVerbMenu:=True;
  OleDoc.Iconic:=False;
  Stream:=TMemoryStream.Create;
  Stream.Position:=0;
  TBlobField(QueryTra.FieldByName('EXPTRA_TEXTO')).SaveToStream(Stream);
  Stream.Position:=0;
  if fileExists(ExtractFilePath(ParamStr(0))+'vacio.pdf') then
    OleDoc.CreateObjectFromFile(ExtractFilePath(ParamStr(0))+'vacio.pdf',false)
  else begin
    Showmessage('No Existe '+ExtractFilePath(ParamStr(0))+'vacio.pdf. Debe crearse.');
    Close;
    Exit;
  end;
  h := FindWindow(PChar(Clase), nil);
  if (h <> null) then begin
    windows.EnableMenuItem(GetMenu(h), SC_CLOSE, MF_GRAYED);
    Windows.SetParent(h, PDoc.Handle);
    windows.SetWindowLong( h, GWL_STYLE,WS_DLGFRAME ) ;
    ShowWindow(h, SW_MAXIMIZE  );
  end;
  OleDoc.LoadFromStream(Stream);
  Stream.Free;
  OleDoc.DoVerb(ovPrimary);
  OleDoc.Enabled:=True;
  OleDoc.SetFocus;
y grabarlos desde un boton de mi formulario:
Código Delphi [-]
procedure GrabaCampo;
var
  Stream: TMemoryStream;
begin
  Stream:=TMemoryStream.Create;
  Stream.Position:=0;
  OleDoc.SaveToStream(Stream);
  Stream.Position:=0;  
  TBlobField(QueryTra.FieldByName('EXPTRA_TEXTO')).LoadFromStream(Stream);
  Stream.Free;
  OleDoc.Modified:=false;
  OleDoc.UpdateControlState;
  OleDoc.Close;
  OleDoc.Free;
end;
A pesar de que graba correctamente las modificaiones, me lanza un error de que Acrobat a detectado un error y ha tenido que cerrarse al hacer el close. Ademas de un mensaje de: La memoria nose puede "read".
Esto solo sucede si modifico algún dato en el formulario, sino cierra correctamente.
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
Ocultar Barra de Windows (Azul) en objeto oleautomation apicito OOP 2 04-05-2007 15:00:11
acrobat profesional donde bajarlo ? martita Varios 2 29-11-2006 17:37:45
ActiveX PDF.ocx de Acrobat Reader jafm Varios 0 17-05-2005 12:32:21
Marcadores ACROBAT tarco35 Varios 0 28-03-2005 19:05:54
Problemas con OleAutomation y los Indy9 en Delphi7 rsotolongo Varios 0 15-01-2004 05:18:01


La franja horaria es GMT +2. Ahora son las 14:49:22.


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