Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber si un pdf es realmente pdf (https://www.clubdelphi.com/foros/showthread.php?t=85099)

santiago14 28-01-2014 17:27:55

Saber si un pdf es realmente pdf
 
Buenas, estoy haciendo una pequeña aplicación donde necesito saber si el pdf que levantan a una ventana de la aplicación es verdaderamente un pdf. Sabemos que a un archivo le podemos cambiar su extesión y listo, Delphi ya me la agarra. Pero resulta que luego no es del tipo que esperábamos.
La cuestión es: ¿Cómo hago para asegurar que el archivo que me están subiendo es realmente pdf?

He preguntado lo mismo en otro sub-foro pero con jpg's, tal vez la forma sea igual ¿o no?

Gracias.

ecfisa 28-01-2014 22:33:14

Hola santiago14.

Código Delphi [-]
function IsPDFFile(aFileName: TFileName): Boolean;
var
  Buf: array[0..3] of byte;
  Stream: TFileStream;
begin
  with TFileStream.Create(aFileName, fmOpenRead) do
  try
    Read(Buf, SizeOf(Buf));
    Result:= (Buf[0]=$25) and (Buf[1]=$50) and (Buf[2]=$44) and (Buf[3]=$46);
  finally
    Free;
  end;
end;

Saludos :)

santiago14 29-01-2014 00:55:56

Gracias compañero, creo que el mismo criterio puede ser usado para analizar la cabecera de un jpg.
Si bien con esto no puedo saber si un archivo está corrupto o no, puedo saber si es un jpg del bueno. Eso es un gran avance.

Gracias de nuevo.

ecfisa 29-01-2014 05:55:20

Hola santiago14.

Así es, con las modificaciones corresponidentes te serviría para evaluar cualquier firma.

Aprovecho a mencionarte que la declaración de la variable Stream, es innecesaria (me quedó de la prueba :o )

Saludos :)

Neftali [Germán.Estévez] 29-01-2014 11:17:05

Iba a decir que lo cargaras como texto y comprobaras la cabecera, que siempre es similar e incluye número de versión, pero veo que es lo mismo que hace el procedimiento de ecfisa.

Encontrarás cosas como, %PDF-1.2, %PDF-1.4,...


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

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