diff options
Diffstat (limited to 'vendor/setasign/fpdi/src/PdfParser/Type/PdfHexString.php')
-rw-r--r-- | vendor/setasign/fpdi/src/PdfParser/Type/PdfHexString.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/setasign/fpdi/src/PdfParser/Type/PdfHexString.php b/vendor/setasign/fpdi/src/PdfParser/Type/PdfHexString.php new file mode 100644 index 0000000..0084ada --- /dev/null +++ b/vendor/setasign/fpdi/src/PdfParser/Type/PdfHexString.php @@ -0,0 +1,77 @@ +<?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\StreamReader; + +/** + * Class representing a hexadecimal encoded PDF string object + */ +class PdfHexString extends PdfType +{ + /** + * Parses a hexadecimal string object from the stream reader. + * + * @param StreamReader $streamReader + * @return bool|self + */ + public static function parse(StreamReader $streamReader) + { + $bufferOffset = $streamReader->getOffset(); + + while (true) { + $buffer = $streamReader->getBuffer(false); + $pos = \strpos($buffer, '>', $bufferOffset); + if ($pos === false) { + if (!$streamReader->increaseLength()) { + return false; + } + continue; + } + + break; + } + + $result = \substr($buffer, $bufferOffset, $pos - $bufferOffset); + $streamReader->setOffset($pos + 1); + + $v = new self(); + $v->value = $result; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param string $string The hex encoded string. + * @return self + */ + public static function create($string) + { + $v = new self(); + $v->value = $string; + + return $v; + } + + /** + * Ensures that the passed value is a PdfHexString instance. + * + * @param mixed $hexString + * @return self + * @throws PdfTypeException + */ + public static function ensure($hexString) + { + return PdfType::ensureType(self::class, $hexString, 'Hex string value expected.'); + } +} |