Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.

Differences Between: [Versions 310 and 311] [Versions 39 and 311]

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