Страница 1 из 1
Как узнать из Delphi количество страниц pdf-tiff-документа?
Добавлено: 01 дек 2004, 11:22
cULt
Привет, великие умы Инета!!
Мне срочно нужно узнать из Дельфей количество страниц в pdf и tiff-документе для дальнейших математических действий с этим числом - кто знает - чиркните мне, плз, а то курсач сыплется!
Вообще никак не могу сделать... :?
Добавлено: 04 сен 2005, 16:50
skriaxit
У меня сейчас стоит точно такая же задача. Может кто за год узнал как это сделать?
Добавлено: 05 сен 2005, 11:55
LAngel
А посмотреть формат PDF файла???
Код: Выделить всё
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;
uses StrUtils;
Добавлено: 05 сен 2005, 12:17
LAngel
Более общий вариант. а то предыдущий для 1.5 версии уже не подходит:
Код: Выделить всё
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;
Добавлено: 05 сен 2005, 22:27
skriaxit
2LAngel,
К сожалению, эта функция будет работать менее, чем в половине случаев. Посмотри, например, pdf, созданный при помощи acrobat distiller'a и open office'a. Та же ситуация со всеми другими программами для создания pdf. А нужно универсальное решение.
PS: Конечно, можно покопаться в спецификации pdf и tiff и сваять решение, но это непростительная и ненужная трата времени. Я уверен, что уже существует готовое решение. Зачем изобретать велосипед, если его можно купить?