Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 07-08-2014
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Adobe

Nelson me quede pensando..no hay forma que muestre el PDF como una imagen y ahi lo protejo?. Sigo buscandoi por todos los foros y hablan del mismo problema.
Responder Con Cita
  #22  
Antiguo 07-08-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
shoulder,

Cita:
Empezado por shoulder
...no hay forma que muestre el PDF como una imagen y ahi lo protejo...


Estoy analizando otra solución, hasta ahora se adapta a tus requerimientos y mucho más, actualmente estoy trabajando en los detalles de implementación, cuando tenga algo más concreto lo publico lo más pronto posible

Pregunto : ¿Cual es el objetivo de la aplicación que requiere el View PDF?, ¿En que área y país se ubica la empresa(s) que utilizaran la aplicación?

Saludos,

Nelson.
Responder Con Cita
  #23  
Antiguo 07-08-2014
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Adobe

Hola Nelson estoy en Argentina, el tema es que firman digitalmente por ejemplo una nota se guarda en el servidor ese pdf y es solamente para visualizar la imagen por eso use el webbrowser que funciona excelente. El unico tema fue el famoso F8 que me comentaste y la Barra1 que permite copiar la nota. El ejemplo concreto es visualizar el PDF nada mas anulando todas las barras que en el principio funciona bien.

Gracias!!.
Responder Con Cita
  #24  
Antiguo 08-08-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
shoulder,

Cita:
Empezado por shoulder
...El ejemplo concreto es visualizar el PDF nada mas anulando todas las barras...


Te comento:

1- Para evitar los problema mencionados en tu caso particular en el Msg #19 opte por una solución alternativa : Sumatra PDF.

Cita:
What is Sumatra PDF?

Sumatra PDF is a free PDF, eBook (ePub, Mobi), XPS, DjVu, CHM, Comic Book (CBZ and CBR) reader for Windows.


Sumatra PDF is powerful, small, portable and starts up very fast.


Simplicity of the user interface has a high priority
.
2- Sumatra PDF permite parametrizar las opciones de visualización y funcionamiento de la aplicación, por medio de los archivos de configuración sumatrapdfrestrict.ini y SumatraPDF-settings.txt.

3- Sumatra PDF puede ser instalado de forma convencional o ser usado en su versión portable, para el código del ejemplo se utilizo la opción portable.

4- Sumatra PDF puede ser utilizado como un plugin dentro de un componente contenedor (TPanel, TForm), por medio de la opción: -plugin

5- Sumatra PDF es muy rápido, en pruebas realizadas en local un documento PDF de 857 páginas se cargo completamente en 2 segundos.

Revisa este código
Código Delphi [-]
  unit Unit1;
  
  interface
  
  uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Menus, ShellAPI, ExtCtrls, TlHelp32;
  
  type
    TForm1 = class(TForm)
      Panel1: TPanel;
      Button1: TButton;
      Button2: TButton;
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  const
    TitleViewer : String = 'Viewer of Documents PDF';
  
  var
    Form1: TForm1;
    ProcessID : THandle;
  
  implementation
  
  {$R *.dfm}
  
  // Ejecuta un Proceso Externo
  function ShellExecuteApp(const CmdLine : String) : THandle;
  var
     PI : PROCESS_INFORMATION;
     SI : STARTUPINFO;
     RP : LongBool;
  
  begin;
  
     ZeroMemory(@PI, SizeOf(PI));
     ZeroMemory(@SI, SizeOf(SI));
  
     SI.cb := SizeOf(SI);
  
     RP := CreateProcess(nil, PChar(CmdLine), nil, nil, False,
                         NORMAL_PRIORITY_CLASS, nil, nil, SI, PI);
  
     WaitForSingleObject(PI.hProcess, 150);
  
     if Integer(RP) <> 0 then
     begin
        CloseHandle(PI.hThread);
        CloseHandle(PI.hProcess);
        Result := PI.dwProcessID;
     end
     else
        Result := 0;
  
  end;
  
  // Finaliza un Proceso por su ProcessID
  function TerminateProcessByID(ProcessID: Cardinal): Boolean;
  var
     Process : THandle;
  
  begin
  
     Process := OpenProcess(PROCESS_TERMINATE,False,ProcessID);
  
     if Process > 0 then
     try
        Result := TerminateProcess(Process,0);
     finally
        CloseHandle(Process);
     end
     else
        Result := False;
  
  end;
  
  // Inicialización de ProcessID
  procedure TForm1.FormCreate(Sender: TObject);
  begin
     ProcessID := 0;
  end;
  
  // Visualiza un Documento PDF en un TPanel con SumatraPDF
  procedure TForm1.Button1Click(Sender: TObject);
  var
     CmdLine : String;
     openDialog : TOpenDialog;
     Msg : String;
  
  begin
  
     if (ProcessID = 0) then
     begin
  
        openDialog := TOpenDialog.Create(self);
        openDialog.InitialDir := GetCurrentDir;
        openDialog.Options := [ofFileMustExist];
        openDialog.Filter := 'PDF files|*.pdf';
        openDialog.FilterIndex := 1;
  
        if openDialog.Execute then
        begin
  
           CmdLine := ExtractFilePath(Application.ExeName) + 'SumatraPDF.exe'
                      + ' -plugin '
                      + IntToStr(Panel1.Handle)
                      + ' '
                      + '"' + openDialog.FileName + '"';
  
           ProcessID := ShellExecuteApp(CmdLine);
  
           if ProcessID = 0 then
           begin
              Msg := 'Error de Inicialización de View PDF';
              MessageBox(Handle, PChar(Msg), PChar('Error'), MB_OK + MB_ICONERROR);
           end
           else
              Caption := TitleViewer + ' : ' + ExtractFileName(openDialog.FileName);
  
        end
        else
        begin
           Msg := 'No Se Selecciono Ningún Archivo PDF a Visualizar';
           MessageBox(Handle, PChar(Msg), PChar('Information'), MB_OK + MB_ICONINFORMATION);
        end;
  
     end
     else
     begin
        Msg := 'Existe un Documento Activo en el View PDF';
        MessageBox(Handle, PChar(Msg), PChar('Information'), MB_OK + MB_ICONINFORMATION);
     end;
  
  end;
  
  // Finaliza Visualización un Documento PDF en un TPanel con SumatraPDF
  procedure TForm1.Button2Click(Sender: TObject);
  begin
     if (ProcessID > 0) then
     begin
        TerminateProcessByID(ProcessID);
        ProcessID := 0;
        Caption := TitleViewer;
     end;
  end;
  
  // Cierra y Libera los Recursos del Formmulario
  procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
     Action := caFree;
  end;
  
  end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32, permite visualizar documentos PDF por medio de Sumatra PDF en modo plugin dentro de un componente TPanel, con las opciones de salvar e imprimir documentos PDF inhabilitadas, como se muestra en la siguiente imagen:



El código del ejemplo con la versión portable de Sumatra PDF, esta disponible en: Viewer of Documents PDF with SumatraPDF.rar

Revisa la siguiente información:
Nota: Te sugiero usar la versión portable de Sumatra PDF, la cual podrás distribuir con tu aplicación junto con los archivos de configuración (Puedes usar los del ejemplo) ó hacer la instalación (Copia) en el Servidor de dicha versión, todo depende del número de usuarios que utilicen tu aplicación.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 08-08-2014 a las 10:05:10.
Responder Con Cita
  #25  
Antiguo 08-08-2014
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Sumatra

Realmente fantastico, lo estaba viendo y analizando cumple todas las expectativas, estaba viendo como se ven las firmas digitales, en el INI ver como hago que muestre el panel de firmas digitales. Realmente lo que hiciste muchisimos usuarios lo estaban buscando en la red.

Felicitaciones.
Responder Con Cita
  #26  
Antiguo 08-08-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Excelente Nelson.
Un gran aporte, que sin duda muchos apreciaremos.

Saludos
Responder Con Cita
  #27  
Antiguo 11-08-2014
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Buena contribución. Gracias.
__________________
http://www.gestionportable.com
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
ActiveX Acrobat Mystery Varios 1 23-04-2010 22:19:07
ShellExecute y cerrar Acrobat jmlifi Impresión 5 30-01-2009 02:59:31
Hook no me funciona con Acrobat ramiretor API de Windows 0 16-11-2007 01:04:44
OleAutomation con Acrobat Profesional apicito OOP 1 30-10-2007 10:26:05
Marcadores ACROBAT tarco35 Varios 0 28-03-2005 19:05:54


La franja horaria es GMT +2. Ahora son las 16:10:24.


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