diff options
Diffstat (limited to '')
-rw-r--r-- | vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php b/vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php new file mode 100644 index 0000000..7672dcd --- /dev/null +++ b/vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php @@ -0,0 +1,78 @@ +<?php + +/** + * This file is part of FPDI + * + * @package setasign\Fpdi + * @copyright Copyright (c) 2020 Setasign GmbH & Co. KG (https://www.setasign.com) + * @license http://opensource.org/licenses/mit-license The MIT License + */ + +namespace setasign\Fpdi\PdfParser\Type; + +use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException; +use setasign\Fpdi\PdfParser\PdfParser; +use setasign\Fpdi\PdfParser\PdfParserException; + +/** + * A class defining a PDF data type + */ +class PdfType +{ + /** + * Resolves a PdfType value to its value. + * + * This method is used to evaluate indirect and direct object references until a final value is reached. + * + * @param PdfType $value + * @param PdfParser $parser + * @param bool $stopAtIndirectObject + * @return PdfType + * @throws CrossReferenceException + * @throws PdfParserException + */ + public static function resolve(PdfType $value, PdfParser $parser, $stopAtIndirectObject = false) + { + if ($value instanceof PdfIndirectObject) { + if ($stopAtIndirectObject === true) { + return $value; + } + + return self::resolve($value->value, $parser, $stopAtIndirectObject); + } + + if ($value instanceof PdfIndirectObjectReference) { + return self::resolve($parser->getIndirectObject($value->value), $parser, $stopAtIndirectObject); + } + + return $value; + } + + /** + * Ensure that a value is an instance of a specific PDF type. + * + * @param string $type + * @param PdfType $value + * @param string $errorMessage + * @return mixed + * @throws PdfTypeException + */ + protected static function ensureType($type, $value, $errorMessage) + { + if (!($value instanceof $type)) { + throw new PdfTypeException( + $errorMessage, + PdfTypeException::INVALID_DATA_TYPE + ); + } + + return $value; + } + + /** + * The value of the PDF type. + * + * @var mixed + */ + public $value; +} |