diff options
Diffstat (limited to 'vendor/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php')
-rw-r--r-- | vendor/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/vendor/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php b/vendor/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php new file mode 100644 index 0000000..15786d0 --- /dev/null +++ b/vendor/setasign/fpdi/src/PdfParser/Type/PdfIndirectObject.php @@ -0,0 +1,103 @@ +<?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\PdfParser; +use setasign\Fpdi\PdfParser\StreamReader; +use setasign\Fpdi\PdfParser\Tokenizer; + +/** + * Class representing an indirect object + */ +class PdfIndirectObject extends PdfType +{ + /** + * Parses an indirect object from a tokenizer, parser and stream-reader. + * + * @param int $objectNumberToken + * @param int $objectGenerationNumberToken + * @param PdfParser $parser + * @param Tokenizer $tokenizer + * @param StreamReader $reader + * @return bool|self + * @throws PdfTypeException + */ + public static function parse( + $objectNumberToken, + $objectGenerationNumberToken, + PdfParser $parser, + Tokenizer $tokenizer, + StreamReader $reader + ) { + $value = $parser->readValue(); + if ($value === false) { + return false; + } + + $nextToken = $tokenizer->getNextToken(); + if ($nextToken === 'stream') { + $value = PdfStream::parse($value, $reader, $parser); + } elseif ($nextToken !== false) { + $tokenizer->pushStack($nextToken); + } + + $v = new self(); + $v->objectNumber = (int) $objectNumberToken; + $v->generationNumber = (int) $objectGenerationNumberToken; + $v->value = $value; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param int $objectNumber + * @param int $generationNumber + * @param PdfType $value + * @return self + */ + public static function create($objectNumber, $generationNumber, PdfType $value) + { + $v = new self(); + $v->objectNumber = (int) $objectNumber; + $v->generationNumber = (int) $generationNumber; + $v->value = $value; + + return $v; + } + + /** + * Ensures that the passed value is a PdfIndirectObject instance. + * + * @param mixed $indirectObject + * @return self + * @throws PdfTypeException + */ + public static function ensure($indirectObject) + { + return PdfType::ensureType(self::class, $indirectObject, 'Indirect object expected.'); + } + + /** + * The object number. + * + * @var int + */ + public $objectNumber; + + /** + * The generation number. + * + * @var int + */ + public $generationNumber; +} |