protected function readPages()
    {
        if (\count($this->pages) > 0) {
            return;
        }

        $readPages = function ($kids, $count) use (&$readPages) {
            $kids = PdfArray::ensure($kids);
            $isLeaf = $count->value === \count($kids->value);

            foreach ($kids->value as $reference) {
                $reference = PdfIndirectObjectReference::ensure($reference);

                if ($isLeaf) {
                    $this->pages[] = $reference;
                    continue;
                }

                $object = $this->parser->getIndirectObject($reference->value);
                $type = PdfDictionary::get($object->value, 'Type');

                if ($type->value === 'Pages') {
                    $readPages(PdfDictionary::get($object->value, 'Kids'), PdfDictionary::get($object->value, 'Count'));
                } else {
                    $this->pages[] = $object;
                }
            }
        };

        $catalog = $this->parser->getCatalog();
        $pages = PdfType::resolve(PdfDictionary::get($catalog, 'Pages'), $this->parser);
        $count = PdfType::resolve(PdfDictionary::get($pages, 'Count'), $this->parser);
        $kids = PdfType::resolve(PdfDictionary::get($pages, 'Kids'), $this->parser);
        $readPages($kids, $count);
    }
protected function readPages()
    {
        if (\count($this->pages) > 0) {
            return;
        }

        $readPages = function ($kids, $count) use (&$readPages) {
            $kids = PdfArray::ensure($kids);
            $isLeaf = $count->value === \count($kids->value);

            foreach ($kids->value as $reference) {
                $reference = PdfIndirectObjectReference::ensure($reference);

                if ($isLeaf) {
                    $this->pages[] = $reference;
                    continue;
                }

                $object = $this->parser->getIndirectObject($reference->value);
                $type = PdfDictionary::get($object->value, 'Type');

                if ($type->value === 'Pages') {
                    $readPages(PdfDictionary::get($object->value, 'Kids'), PdfDictionary::get($object->value, 'Count'));
                } else {
                    $this->pages[] = $object;
                }
            }
        };

        $catalog = $this->parser->getCatalog();
        $pages = PdfType::resolve(PdfDictionary::get($catalog, 'Pages'), $this->parser);
        $count = PdfType::resolve(PdfDictionary::get($pages, 'Count'), $this->parser);
        $kids = PdfType::resolve(PdfDictionary::get($pages, 'Kids'), $this->parser);
        $readPages($kids, $count);
    }
protected function readPages ( ) { if ( \ count ( $ this -> pages ) > 0 ) { return ; } $ readPages = function ( $ kids , $ count ) use ( & $ readPages ) { $ kids = PdfArray :: ensure ( $ kids ) ; $ isLeaf = $ count -> value === \ count ( $ kids -> value ) ; foreach ( $ kids -> value as $ reference ) { $ reference = PdfIndirectObjectReference :: ensure ( $ reference ) ; if ( $ isLeaf ) { $ this -> pages [ ] = $ reference ; continue ; } $ object = $ this -> parser -> getIndirectObject ( $ reference -> value ) ; $ type = PdfDictionary :: get ( $ object -> value , 'Type' ) ; if ( $ type -> value === 'Pages' ) { $ readPages ( PdfDictionary :: get ( $ object -> value , 'Kids' ) , PdfDictionary :: get ( $ object -> value , 'Count' ) ) ; } else { $ this -> pages [ ] = $ object ; } } } ; $ catalog = $ this -> parser -> getCatalog ( ) ; $ pages = PdfType :: resolve ( PdfDictionary :: get ( $ catalog , 'Pages' ) , $ this -> parser ) ; $ count = PdfType :: resolve ( PdfDictionary :: get ( $ pages , 'Count' ) , $ this -> parser ) ; $ kids = PdfType :: resolve ( PdfDictionary :: get ( $ pages , 'Kids' ) , $ this -> parser ) ; $ readPages ( $ kids , $ count ) ; }
Walk the page tree and resolve all indirect objects of all pages.

@throws PdfTypeException
@throws CrossReferenceException
@throws PdfParserException
Walk the page tree and resolve all indirect objects of all pages .