function getPageCount(StreamInterface $stream): int
{
$result = 0;
$stream->rewind();
while (! $stream->eof()) {
$chunk = $stream->read(4096);
// looking for root node PDF 1.7+
$found = \preg_match('/\/Type\s*?\/Pages(?:(?!\/Parent).)*\/Count\s?(?\d+)/', $chunk, $matches);
if (0 < $found) {
return (int) $matches['value'];
}
// looking for root node PDF < 1.7
$found = \preg_match('/\/Count\s?(?\d+)\s?\/Type\s*?\/Pages/', $chunk, $matches);
if (0 < $found) {
return (int) $matches['value'];
}
// looking for root node PDF 1.7
// Both regex1 & regex2 should work, but $regex2 is preferred.
$regex1 = '/(?<=\/Type\s\/Pages\s(.*)\/Count\s)\d*/gs';
$regex2 = '/\/Type\s*?\/Pages\s.*\/Count\s?(?\d+)/s';
$found = \preg_match($regex2, $chunk, $matches);
if (0 < $found) {
return (int) $matches['value'];
}
// looking for /Type/Page
$found = \preg_match_all('/\/Type\s*?\/Page\s+/', $chunk, $matches);
if (0 < $found) {
$result += $found;
}
}
$stream->rewind();
return $result;
}
Friday, 5 March 2021
Count number of PDF file pages in PHP
Below function returns the number of pages count in PHP
Subscribe to:
Post Comments (Atom)
great
ReplyDelete