Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 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 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 310 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\CrossReference\CrossReferenceException;
  13  use setasign\Fpdi\PdfParser\PdfParser;
  14  use setasign\Fpdi\PdfParser\PdfParserException;
  15  
  16  /**
  17   * A class defining a PDF data type
  18   *
  19   * @package setasign\Fpdi\PdfParser\Type
  20   */
  21  class PdfType
  22  {
  23      /**
  24       * Resolves a PdfType value to its value.
  25       *
  26       * This method is used to evaluate indirect and direct object references until a final value is reached.
  27       *
  28       * @param PdfType $value
  29       * @param PdfParser $parser
  30       * @param bool $stopAtIndirectObject
  31       * @return PdfType
  32       * @throws CrossReferenceException
  33       * @throws PdfParserException
  34       */
  35      public static function resolve(PdfType $value, PdfParser $parser, $stopAtIndirectObject = false)
  36      {
  37          if ($value instanceof PdfIndirectObject) {
  38              if ($stopAtIndirectObject === true) {
  39                  return $value;
  40              }
  41  
  42              return self::resolve($value->value, $parser, $stopAtIndirectObject);
  43          }
  44  
  45          if ($value instanceof PdfIndirectObjectReference) {
  46              return self::resolve($parser->getIndirectObject($value->value), $parser, $stopAtIndirectObject);
  47          }
  48  
  49          return $value;
  50      }
  51  
  52      /**
  53       * Ensure that a value is an instance of a specific PDF type.
  54       *
  55       * @param string $type
  56       * @param PdfType $value
  57       * @param string $errorMessage
  58       * @return mixed
  59       * @throws PdfTypeException
  60       */
  61      protected static function ensureType($type, $value, $errorMessage)
  62      {
  63          if (!($value instanceof $type)) {
  64              throw new PdfTypeException(
  65                  $errorMessage,
  66                  PdfTypeException::INVALID_DATA_TYPE
  67              );
  68          }
  69  
  70          return $value;
  71      }
  72  
  73      /**
  74       * The value of the PDF type.
  75       *
  76       * @var mixed
  77       */
  78      public $value;
  79  }