123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- /**
- * This file is part of FPDI
- *
- * @package Fpdi
- * @copyright Copyright (c) 2020 Setasign GmbH & Co. KG (https://www.setasign.com)
- * @license http://opensource.org/licenses/mit-license The MIT License
- */
- namespace Fpdi\PdfParser\Type;
- use Fpdi\PdfParser\CrossReference\CrossReferenceException;
- use Fpdi\PdfParser\PdfParser;
- use 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;
- }
|