12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?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\PdfParser;
- use Fpdi\PdfParser\Tokenizer;
- /**
- * Class representing a PDF array object
- *
- * @property array $value The value of the PDF type.
- */
- class PdfArray extends PdfType
- {
- /**
- * Parses an array of the passed tokenizer and parser.
- *
- * @param Tokenizer $tokenizer
- * @param PdfParser $parser
- * @return bool|self
- * @throws PdfTypeException
- */
- public static function parse(Tokenizer $tokenizer, PdfParser $parser)
- {
- $result = [];
- // Recurse into this function until we reach the end of the array.
- while (($token = $tokenizer->getNextToken()) !== ']') {
- if ($token === false || ($value = $parser->readValue($token)) === false) {
- return false;
- }
- $result[] = $value;
- }
- $v = new self();
- $v->value = $result;
- return $v;
- }
- /**
- * Helper method to create an instance.
- *
- * @param PdfType[] $values
- * @return self
- */
- public static function create(array $values = [])
- {
- $v = new self();
- $v->value = $values;
- return $v;
- }
- /**
- * Ensures that the passed array is a PdfArray instance with a (optional) specific size.
- *
- * @param mixed $array
- * @param null|int $size
- * @return self
- * @throws PdfTypeException
- */
- public static function ensure($array, $size = null)
- {
- $result = PdfType::ensureType(self::class, $array, 'Array value expected.');
- if ($size !== null && \count($array->value) !== $size) {
- throw new PdfTypeException(
- \sprintf('Array with %s entries expected.', $size),
- PdfTypeException::INVALID_DATA_SIZE
- );
- }
- return $result;
- }
- }
|