Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 39 and 311] [Versions 39 and 400] [Versions 39 and 401] [Versions 39 and 402] [Versions 39 and 403]

   1  <?php
   2  /**
   3   * This file is part of FPDI
   4   *
   5   * @package   setasign\Fpdi
   6   * @copyright Copyright (c) 2019 Setasign - Jan Slabon (https://www.setasign.com)
   7   * @license   http://opensource.org/licenses/mit-license The MIT License
   8   */
   9  
  10  namespace setasign\Fpdi\PdfParser\Type;
  11  
  12  use setasign\Fpdi\PdfParser\PdfParser;
  13  use setasign\Fpdi\PdfParser\StreamReader;
  14  use setasign\Fpdi\PdfParser\Tokenizer;
  15  
  16  /**
  17   * Class representing an indirect object
  18   *
  19   * @package setasign\Fpdi\PdfParser\Type
  20   */
  21  class PdfIndirectObject extends PdfType
  22  {
  23      /**
  24       * Parses an indirect object from a tokenizer, parser and stream-reader.
  25       *
  26       * @param int $objectNumberToken
  27       * @param int $objectGenerationNumberToken
  28       * @param PdfParser $parser
  29       * @param Tokenizer $tokenizer
  30       * @param StreamReader $reader
  31       * @return bool|self
  32       * @throws PdfTypeException
  33       */
  34      public static function parse(
  35          $objectNumberToken,
  36          $objectGenerationNumberToken,
  37          PdfParser $parser,
  38          Tokenizer $tokenizer,
  39          StreamReader $reader
  40      ) {
  41          $value = $parser->readValue();
  42          if ($value === false) {
  43              return false;
  44          }
  45  
  46          $nextToken = $tokenizer->getNextToken();
  47          if ($nextToken === 'stream') {
  48              $value = PdfStream::parse($value, $reader, $parser);
  49          } elseif ($nextToken !== false) {
  50              $tokenizer->pushStack($nextToken);
  51          }
  52  
  53          $v = new self;
  54          $v->objectNumber = (int) $objectNumberToken;
  55          $v->generationNumber = (int) $objectGenerationNumberToken;
  56          $v->value = $value;
  57  
  58          return $v;
  59      }
  60  
  61      /**
  62       * Helper method to create an instance.
  63       *
  64       * @param int $objectNumber
  65       * @param int $generationNumber
  66       * @param PdfType $value
  67       * @return self
  68       */
  69      public static function create($objectNumber, $generationNumber, PdfType $value)
  70      {
  71          $v = new self;
  72          $v->objectNumber = (int) $objectNumber;
  73          $v->generationNumber = (int) $generationNumber;
  74          $v->value = $value;
  75  
  76          return $v;
  77      }
  78  
  79      /**
  80       * Ensures that the passed value is a PdfIndirectObject instance.
  81       *
  82       * @param mixed $indirectObject
  83       * @return self
  84       * @throws PdfTypeException
  85       */
  86      public static function ensure($indirectObject)
  87      {
  88          return PdfType::ensureType(self::class, $indirectObject, 'Indirect object expected.');
  89      }
  90  
  91      /**
  92       * The object number.
  93       *
  94       * @var int
  95       */
  96      public $objectNumber;
  97  
  98      /**
  99       * The generation number.
 100       *
 101       * @var int
 102       */
 103      public $generationNumber;
 104  }