Мне срочно нужно узнать из Дельфей количество страниц в pdf и tiff-документе для дальнейших математических действий с этим числом - кто знает - чиркните мне, плз, а то курсач сыплется!
Вообще никак не могу сделать... :?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Код: Выделить всё
function GetPDFPageNumber(FName: TFileName): Integer;
var
ST: TFileStream;
S: String;
c: Char;
i : Integer;
begin
ST := TFileStream.Create(FName, fmOpenRead);
try
S :='';
While LowerCase(RightStr(S, 3)) <> 'obj' do
begin
S :='';
ST.ReadBuffer(C, 1);
while (C <> #13) and (C <> #10) do
begin
S := S + C;
ST.ReadBuffer(C, 1);
end;
end;
While LowerCase(LeftStr(S, 2)) <> '/n' do
begin
S :='';
ST.ReadBuffer(C, 1);
while (C <> #13) and (C <> #10) do
begin
S := S + C;
ST.ReadBuffer(C, 1);
end;
end;
S := Trim(RightStr(S, Length(S)-2));
Result := StrToInt(S);
finally
ST.Free;
end;
end;
Код: Выделить всё
function GetPDFPageNumber(FName: TFileName): Integer;
var
ST: TFileStream;
S, R: String;
c: Char;
i : Integer;
begin
ST := TFileStream.Create(FName, fmOpenRead);
try
S :='';
ST.ReadBuffer(C, 1);
While pos('obj', S) = 0 do
begin
S :='';
while (C <> #13) and (C <> #10) do
begin
S := S + LowerCase(c);
ST.ReadBuffer(C, 1);
end;
while (C = #13) or (C = #10) do ST.ReadBuffer(C, 1);
end;
While pos('endobj', S) <= 0 do
begin
S := S + LowerCase(c);
ST.ReadBuffer(C, 1);
end;
S := trim(copy(S, pos('/n', S)+2, Length(S) - pos('/n', s)-2));
i := 1;
R := '';
while S[i] in ['0'..'9'] do
begin
R := R + S[i];
inc(i);
end;
Result := StrToInt(R);
finally
ST.Free;
end;
end;