protected function initReaderInstance($initValue)
    {
        $position = $this->parser->getStreamReader()->getPosition()
            + $this->parser->getStreamReader()->getOffset() + $this->fileHeaderOffset;

        if ($initValue instanceof PdfToken && $initValue->value === 'xref') {
            try {
                return new FixedReader($this->parser);
            } catch (CrossReferenceException $e) {
                $this->parser->getStreamReader()->reset($position);
                $this->parser->getTokenizer()->clearStack();

                return new LineReader($this->parser);
            }
        }

        if ($initValue instanceof PdfIndirectObject) {
            // check for encryption
            $stream = PdfStream::ensure($initValue->value);

            $type = PdfDictionary::get($stream->value, 'Type');
            if ($type->value !== 'XRef') {
                throw new CrossReferenceException(
                    'The xref position points to an incorrect object type.',
                    CrossReferenceException::INVALID_DATA
                );
            }

            $this->checkForEncryption($stream->value);

            throw new CrossReferenceException(
                'This PDF document probably uses a compression technique which is not supported by the ' .
                'free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)',
                CrossReferenceException::COMPRESSED_XREF
            );
        }

        throw new CrossReferenceException(
            'The xref position points to an incorrect object type.',
            CrossReferenceException::INVALID_DATA
        );
    }
protected function initReaderInstance($initValue)
    {
        $position = $this->parser->getStreamReader()->getPosition()
            + $this->parser->getStreamReader()->getOffset() + $this->fileHeaderOffset;

        if ($initValue instanceof PdfToken && $initValue->value === 'xref') {
            try {
                return new FixedReader($this->parser);
            } catch (CrossReferenceException $e) {
                $this->parser->getStreamReader()->reset($position);
                $this->parser->getTokenizer()->clearStack();

                return new LineReader($this->parser);
            }
        }

        if ($initValue instanceof PdfIndirectObject) {
            // check for encryption
            $stream = PdfStream::ensure($initValue->value);

            $type = PdfDictionary::get($stream->value, 'Type');
            if ($type->value !== 'XRef') {
                throw new CrossReferenceException(
                    'The xref position points to an incorrect object type.',
                    CrossReferenceException::INVALID_DATA
                );
            }

            $this->checkForEncryption($stream->value);

            throw new CrossReferenceException(
                'This PDF document probably uses a compression technique which is not supported by the ' .
                'free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)',
                CrossReferenceException::COMPRESSED_XREF
            );
        }

        throw new CrossReferenceException(
            'The xref position points to an incorrect object type.',
            CrossReferenceException::INVALID_DATA
        );
    }
protected function initReaderInstance ( $ initValue ) { $ position = $ this -> parser -> getStreamReader ( ) -> getPosition ( ) + $ this -> parser -> getStreamReader ( ) -> getOffset ( ) + $ this -> fileHeaderOffset ; if ( $ initValue instanceof PdfToken && $ initValue -> value === 'xref' ) { try { return new FixedReader ( $ this -> parser ) ; } catch ( CrossReferenceException $ e ) { $ this -> parser -> getStreamReader ( ) -> reset ( $ position ) ; $ this -> parser -> getTokenizer ( ) -> clearStack ( ) ; return new LineReader ( $ this -> parser ) ; } } if ( $ initValue instanceof PdfIndirectObject ) { // check for encryption $ stream = PdfStream :: ensure ( $ initValue -> value ) ; $ type = PdfDictionary :: get ( $ stream -> value , 'Type' ) ; if ( $ type -> value !== 'XRef' ) { throw new CrossReferenceException ( 'The xref position points to an incorrect object type.' , CrossReferenceException :: INVALID_DATA ) ; } $ this -> checkForEncryption ( $ stream -> value ) ; throw new CrossReferenceException ( 'This PDF document probably uses a compression technique which is not supported by the ' . 'free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)' , CrossReferenceException :: COMPRESSED_XREF ) ; } throw new CrossReferenceException ( 'The xref position points to an incorrect object type.' , CrossReferenceException :: INVALID_DATA ) ; }
Get a cross-reference reader instance.

@param PdfToken|PdfIndirectObject $initValue
@return ReaderInterface|bool
@throws CrossReferenceException
@throws PdfTypeException
Get a cross - reference reader instance .