Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 13-07-2012
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 23
ozsWizzard Va por buen camino
Hola compañeros de Delphi, tengo exactamente este mismo problema, no soy capaz de imprimir un pdf con el componente de acrobat (TAcroPdf).

He utilizado Print, PrintAll, ... todo, vaya, y ésto no imprime.

He comprobado que si meto el componente en un Form, el "Print" funciona correctamente. Iba a tirar por el camino, un tanto chapucero, siguiente:

Como quién se encarga de imprimir es un objeto instanciado(instado según el DRAE) de una clase declarada por mí, iba a ponerle una propiedad del tipo TAcroPdf, y asignarla antes de llamar al procedimiento que se encarga de imprimir.

Pues nada, no me imprime tampoco.

Tengo el "Rad Studio X2 Delphi" y el adobe acrobat 10.0.

El código sería más o menos esto:

Código Delphi [-]
//DECLARACIÓN DE LA CLASE
TMiClase = class
  private
     FPdf:       TAcroPdf;
     FNombreDoc: String;

     procedure Ejecutar(const Accion: String);
  public
     property NombreDoc: String read FNombreDoc;
     property Pdf: TAcroPdf read FPdf write FPdf;

     procedure visualizar;
     procedure Imprimir;

     constructor Create(Id: String);
end;

Código Delphi [-]
//IMPLEMENTACION DE LA CLASE
{ TMiClase }

constructor TMiClase.Create(Id: String);
begin
   inherited Create;

   //Proceso que calcula NombreDoc con el Id, pongamos que le calcula lo siguiente
   FNombreDoc :=  'Fichero.pdf';
end;

procedure TMiClase.Ejecutar(const Accion: String);
var
  ExecInfo : TShellExecuteInfo;
  Fichero: TFichero;
  ExitCode: DWord;
begin
   //La clase "TFichero" se usa para codificar y descodificar ficheros. la idea es que los ficheros se guardan codificados, al abrirlos, los 
   //descodifico en un fichero temporal, que es el que intenta imprimir.
   //Parámetros del Create de TFichero (ruta, documeto, nombre del fichero temporal
    Fichero := TFichero.Create(ExtractFilePath(Application.ExeName),
                               NombreDoc, 'documento.pdf');
    try
      Application.ProcessMessages;
      Fichero.Descodificar;

      if Accion = 'print' then
      begin
         Pdf.LoadFile(WideString(Fichero.Temporal));
         Pdf.Print;
      end
      else begin
         ExecInfo.cbSize := SizeOf(ExecInfo);
         ExecInfo.fMask  := SEE_MASK_NOCLOSEPROCESS;
         ExecInfo.Wnd    := Handle;
         ExecInfo.lpVerb := PWideChar(Accion);
         ExecInfo.lpFile := pChar(Fichero.Temporal);
         ExecInfo.lpParameters := nil;
         ExecInfo.lpDirectory  := nil;
         ExecInfo.nShow  := SW_SHOW;
         ShellExecuteEx(@ExecInfo);

         repeat
            Application.ProcessMessages;
            GetExitCodeProcess(ExecInfo.hProcess, ExitCode) ;
         until (ExitCode <> STILL_ACTIVE);
      end;
    finally
       Fichero.Free;
    end;
end;

procedure TMiClase.Imprimir;
begin
   Ejecutar('print');
end;

procedure TMiClase.visualizar;
begin
   Ejecutar('open');
end;

Código Delphi [-]
//LLAMADA (más o menos)
procedure TForm.actImprimirExecute(Sender: TObject);
var
   MiObjeto: TMiClase;
begin
   //Obtengo el ID, supongamos que es 5
   MiObjeto := TMiClase.Create('5');
   try
      MiObjeto.Pdf := AcroPdf1;
      MiObjeto.Imprimir;
   finally
      MiObjeto.Free;
   end;
end;

Evidentemente, he tenido que quitar código, política de empresa, pero a groso modo esto es lo que hago.
__________________
La Madurez se llama...
~~~Gaia~~~

Última edición por ozsWizzard fecha: 13-07-2012 a las 10:42:41.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problemas en tiempo de ejecución Nelly Varios 4 05-04-2006 19:25:53
Problemas al tratar de crear varios componentes en tiempo de ejecucion ilichhernandez Conexión con bases de datos 2 13-11-2005 19:03:26
Problemas con datos del tiempo soto Varios 2 27-10-2005 01:18:27
Cuestión de tiempo elloco Varios 3 23-02-2004 20:09:58
Tiempo Muerto etrevino Varios 0 11-11-2003 16:18:10


La franja horaria es GMT +2. Ahora son las 06:35:25.


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