Hola.
Tal como te indica
roman, la cadena
%%EOF se sitúa en la última línea del archivo PDF para indicar su final (
PDF Reference).
Y dado que allí debe estar, no se me ocurre código más eficiente que el que te indica para hallarla.
Ahora, si desearas buscar cualquier cadena en cualquier archivo, podrías hacer:
Código Delphi
[-]
function ExistsStrInFile(const SearchedStr, FileName: string): Int64;
var
FS : TStream;
i, cc : Integer;
ch : Char;
begin
Result := -1;
FS := TFileStream.Create(FileName, fmOpenReadWrite);
try
FS.Position := 0;
cc := 1;
i := 0;
while (Result=-1) and (i < FS.Size) do
begin
FS.Read(ch, SizeOf(ch));
if cc = Length(SearchedStr) then
begin
Result := FS.Position - Length(SearchedStr);
Break;
end;
if ch = SearchedStr[cc] then
Inc(cc)
else
cc := 1;
Inc(i);
end;
finally
FS.Free;
end;
end;
la función devuelve -1 si no halla coincidencia o la posición en caso contrario, pero claramente no es eficiente para el caso anterior.
Saludos