2026-01-09 07:13:59 +00:00

27 lines
887 B
PHP

<?php
declare(strict_types=1);
namespace PrinsFrank\PdfParser\Document\Version;
use PrinsFrank\PdfParser\Document\Generic\Marker;
use PrinsFrank\PdfParser\Exception\ParseFailureException;
use PrinsFrank\PdfParser\Stream\Stream;
/** @internal */
class VersionParser {
/** @throws ParseFailureException */
public static function parse(Stream $stream): Version {
if ($stream->read(0, Marker::VERSION->length()) !== Marker::VERSION->value) {
throw new ParseFailureException('Unexpected start of file format. is this a pdf?');
}
$versionString = $stream->read(strlen(Marker::VERSION->value), Version::length());
$version = Version::tryFrom($versionString);
if ($version === null) {
throw new ParseFailureException(sprintf('Unsupported PDF version "%s"', $versionString));
}
return $version;
}
}