public static function parse(Tokenizer $tokenizer, StreamReader $streamReader, PdfParser $parser)
    {
        $entries = [];

        while (true) {
            $token = $tokenizer->getNextToken();
            if ($token === '>' && $streamReader->getByte() === '>') {
                $streamReader->addOffset(1);
                break;
            }

            $key = $parser->readValue($token);
            if ($key === false) {
                return false;
            }

            // ensure the first value to be a Name object
            if (!($key instanceof PdfName)) {
                $lastToken = null;
                // ignore all other entries and search for the closing brackets
                while (($token = $tokenizer->getNextToken()) !== '>' && $token !== false && $lastToken !== '>') {
                    $lastToken = $token;
                }

                if ($token === false) {
                    return false;
                }

                break;
            }


            $value = $parser->readValue();
            if ($value === false) {
                return false;
            }

            if ($value instanceof PdfNull) {
                continue;
            }

            // catch missing value
            if ($value instanceof PdfToken && $value->value === '>' && $streamReader->getByte() === '>') {
                $streamReader->addOffset(1);
                break;
            }

            $entries[$key->value] = $value;
        }

        $v = new self;
        $v->value = $entries;

        return $v;
    }
public static function parse(Tokenizer $tokenizer, StreamReader $streamReader, PdfParser $parser)
    {
        $entries = [];

        while (true) {
            $token = $tokenizer->getNextToken();
            if ($token === '>' && $streamReader->getByte() === '>') {
                $streamReader->addOffset(1);
                break;
            }

            $key = $parser->readValue($token);
            if ($key === false) {
                return false;
            }

            // ensure the first value to be a Name object
            if (!($key instanceof PdfName)) {
                $lastToken = null;
                // ignore all other entries and search for the closing brackets
                while (($token = $tokenizer->getNextToken()) !== '>' && $token !== false && $lastToken !== '>') {
                    $lastToken = $token;
                }

                if ($token === false) {
                    return false;
                }

                break;
            }


            $value = $parser->readValue();
            if ($value === false) {
                return false;
            }

            if ($value instanceof PdfNull) {
                continue;
            }

            // catch missing value
            if ($value instanceof PdfToken && $value->value === '>' && $streamReader->getByte() === '>') {
                $streamReader->addOffset(1);
                break;
            }

            $entries[$key->value] = $value;
        }

        $v = new self;
        $v->value = $entries;

        return $v;
    }
public static function parse ( Tokenizer $ tokenizer , StreamReader $ streamReader , PdfParser $ parser ) { $ entries = [ ] ; while ( true ) { $ token = $ tokenizer -> getNextToken ( ) ; if ( $ token === '>' && $ streamReader -> getByte ( ) === '>' ) { $ streamReader -> addOffset ( 1 ) ; break ; } $ key = $ parser -> readValue ( $ token ) ; if ( $ key === false ) { return false ; } // ensure the first value to be a Name object if ( ! ( $ key instanceof PdfName ) ) { $ lastToken = null ; // ignore all other entries and search for the closing brackets while ( ( $ token = $ tokenizer -> getNextToken ( ) ) !== '>' && $ token !== false && $ lastToken !== '>' ) { $ lastToken = $ token ; } if ( $ token === false ) { return false ; } break ; } $ value = $ parser -> readValue ( ) ; if ( $ value === false ) { return false ; } if ( $ value instanceof PdfNull ) { continue ; } // catch missing value if ( $ value instanceof PdfToken && $ value -> value === '>' && $ streamReader -> getByte ( ) === '>' ) { $ streamReader -> addOffset ( 1 ) ; break ; } $ entries [ $ key -> value ] = $ value ; } $ v = new self ; $ v -> value = $ entries ; return $ v ; }
Parses a dictionary of the passed tokenizer, stream-reader and parser.

@param Tokenizer $tokenizer
@param StreamReader $streamReader
@param PdfParser $parser
@return bool|self
@throws PdfTypeException
Parses a dictionary of the passed tokenizer stream - reader and parser .