вторник, 19 апреля 2011 г.

PHP. Как узнать количество страниц в PDF файле

Нашел интересный пример, как узнать количество страниц в документе PDF, достаточно применить регулярное выражение:
$pdf_content = file_get_contents($pdf_filename);
$count = preg_match_all("/\/Page\W/", $pdf_content, $matches);
echo "Count: {$count}";

Где $pdf_filename - путь к файлу

Но оказалось, что тут просто считывается весь файл (может и очень большой), после чего, мы считаем количество страниц в файле с помощь регулярного выражения. Каждая страница будет содержать ключик Page и номер страницы. Это очень расточительный путь.

Гораздо правильнее поискать в файле параметр где указано количество страниц, а не самим подсчитывать:
$f = fopen($pdf_filename, "r");
while(!feof($f)) {
  $line = fgets($f,255);
  if (preg_match('/\/Count [0-9]+/', $line, $matches)){
    preg_match('/[0-9]+/',$matches[0], $matches2);
    if ($count<$matches2[0]) $count=$matches2[0]; 
  } 
}
fclose($f);
echo "Count: {$count}";

Считываем файл построчно и анализируем пока не найдем искомое

3 комментария: