Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pdf Controlado por Delphi (https://www.clubdelphi.com/foros/showthread.php?t=94013)

usuario1000 19-06-2019 17:17:38

Pdf Controlado por Delphi
 
Buenas, quería saber como abordar este asunto, a ver si pueden darme algo de luz.


Me gustaría realizar un programa en Delphi que muestre un PDF, pero no cualquier PDF, sino uno que yo decida y esté inyectado en el mismo ejecutable de delphi y además que se ejecute en una sóla máquina.



En principio tengo pensado de alguna manera extraer el número de serie de la máquina donde se ejecutaría el programa y si coincide con el que yo quiero, pues mostraría el pdf que iría embebido con el ejecutable, no permitiendo copias ni impresiones, sólo lecturas.


Ya sé que hay programas PDF que lo protegen, pero también los hay que los desprotegen, además mi interés es que además de protegido es que sólo se ejecute en una máquina de una tercera persona.



Gracias.

Neftali [Germán.Estévez] 20-06-2019 13:21:53

Personalmente no me queda claro lo que quieres hacer ya que has comentado muchas cosas, pero no has explicado bien ninguna de ellas.
Comento alguna de las que has dicho a ver si puedes ir aclarandolas un poco más.

Cita:

Empezado por usuario1000 (Mensaje 532462)
Me gustaría realizar un programa en Delphi que muestre un PDF, pero no cualquier PDF, sino uno que yo decida y esté inyectado en el mismo ejecutable de delphi y además que se ejecute en una sóla máquina.

Puedes añadir el PDF como recurso. Puedes comprobar datos de la máquina, lo que no me acaba de quedar claro es c´ñomo vas a hacer para mostrarlo en una sóla máquina.

Cita:

Empezado por usuario1000 (Mensaje 532462)
En principio tengo pensado de alguna manera extraer el número de serie de la máquina donde se ejecutaría el programa

Normamente no hay un número de serie único. Puedes usar datos de la BIOS, del disco duro, de la tarjeta de red,...
También puedes usar una combinación de ellos.

Cita:

Empezado por usuario1000 (Mensaje 532462)
y si coincide con el que yo quiero, pues mostraría el pdf que iría embebido con el ejecutable

El problema es conocer a priori el "Nº de serie" de a máquina destino para compararlo.

Cita:

Empezado por usuario1000 (Mensaje 532462)
... no permitiendo copias ni impresiones, sólo lecturas.

Una vez que abres el PDF no es posible limitar eso, al menos si lo haces con los métodos estandard.
Todos los componentes que conozco permiten, Copiar, Guardar, Imprimir,...
Como último siempre podrás seleccionar y copiar sobre el control.
Lo único que se me ocurre es que no lo muestres como PDF sino como imagen.
Aun así siempre se podrá hacer una captura e imprimirla.
No me queda claro esta parte...

Hay que tener en cuenta también, que cualquier recurso que tengas en el ejecutable siempre puede extraerse.

usuario1000 21-06-2019 14:54:32

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 532481)
Personalmente no me queda claro lo que quieres hacer ya que has comentado muchas cosas, pero no has explicado bien ninguna de ellas.
Comento alguna de las que has dicho a ver si puedes ir aclarandolas un poco más.


Puedes añadir el PDF como recurso. Puedes comprobar datos de la máquina, lo que no me acaba de quedar claro es c´ñomo vas a hacer para mostrarlo en una sóla máquina.


Normamente no hay un número de serie único. Puedes usar datos de la BIOS, del disco duro, de la tarjeta de red,...
También puedes usar una combinación de ellos.


El problema es conocer a priori el "Nº de serie" de a máquina destino para compararlo.


Una vez que abres el PDF no es posible limitar eso, al menos si lo haces con los métodos estandard.
Todos los componentes que conozco permiten, Copiar, Guardar, Imprimir,...
Como último siempre podrás seleccionar y copiar sobre el control.
Lo único que se me ocurre es que no lo muestres como PDF sino como imagen.
Aun así siempre se podrá hacer una captura e imprimirla.
No me queda claro esta parte...

Hay que tener en cuenta también, que cualquier recurso que tengas en el ejecutable siempre puede extraerse.


Darte las gracias por tu respuesta.


Tengo que darle aún una vuelta más a este asunto, pero la idea es que si le envío un pdf a una persona, que sea sólo esta persona quien lo pueda ver y además en su máquina, no en otra.


Sé que cualquier cosa que se muestre en pantalla se puede copiar, pero los pdf's que se envían serían de muchas páginas por lo que sería muy complicado y laborioso copiarlo pantalla a pantalla.


Lo ideal sería enviarle un PDF embebido en un .exe, es decir esta persona ejecute el programa y se le muestra el pdf. Previamente el programa ha comprobado que la máquina es la correcta para mostrar el pdf. (num. serie, lo que sea....).


Lo seguiré mirando. Muchas gracias.

Neftali [Germán.Estévez] 21-06-2019 16:41:36

Cita:

Empezado por usuario1000 (Mensaje 532489)
Sé que cualquier cosa que se muestre en pantalla se puede copiar, pero los pdf's que se envían serían de muchas páginas por lo que sería muy complicado y laborioso copiarlo pantalla a pantalla.


en ese caso, te recomiendo convertir el PDF a imagenes y mostrarlas como tales. De cara al usuario es lo mismo, pero no le permitirá todas las operaciones que quieres evitar.
Los componentes para mostrar PDF's te las van a permitir y va a ser muy difícil "bloquear" todas esas características.

movorack 21-06-2019 17:28:08

Y acaso el usuario (el final, no usuario007) no puede hacer una captura de pantalla y/o tomar fotos?

Javierus 22-06-2019 11:08:29

En cuanto a visualizarlo sin que se pueda copiar, es muy fácil usando Pdfium u otra librería similar para Delphi. Lo que haces es, a la hora de mostrarlo, renderizas cada página a imagen y la pintas en el canvas. Esa librería o alguna similar viene con u. Ejemplo precisamente de eso.

En cuanto que extraigan el PDF, basta con que el PDF esté encriptado; si lo extraen no sabrás la contraseña para verlo.

Lo del ID para decidir si se muestra o no, como dicen, tienes la MAC, el número de serie del disco, el GUID del equipo, el GUID del usuario Windows, y más cosas.

Según sea el caso, si puedes hacer el EXE personalizado, una posibilidad sería calcular el identificador de máquina destino, y encriptar el PDF con ello.

Esto te permitirá no tener que incorporar el ID al exe: si no es correcto, el PDF no se puede abrir, y ya está.

Procura utilizar streams, y no archivos temporales, a la hora de manejar el PDF embebido.

Por cierto: si el PDF lo encriptas con el ID del destino, no necesitas emveberlo en el EXE, ya que va protegido.

De hecho, no necesitas el EXE personalizado: te vale un Exe único, y el PDF encriptado con el ID


La franja horaria es GMT +2. Ahora son las 19:29:29.

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