diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:45:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:45:49 +0000 |
commit | 0ff39c83d38ce538a9f5dba53eca0fa9cb16d9e6 (patch) | |
tree | 84c735df2e97350a721273e9dd425729d43cc8a2 /vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php | |
parent | Initial commit. (diff) | |
download | icingaweb2-module-pdfexport-upstream.tar.xz icingaweb2-module-pdfexport-upstream.zip |
Adding upstream version 0.10.2+dfsg1.upstream/0.10.2+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php')
-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; +} |