first commit
This commit is contained in:
96
mpdf/vendor/setasign/fpdi/src/PdfParser/CrossReference/AbstractReader.php
vendored
Normal file
96
mpdf/vendor/setasign/fpdi/src/PdfParser/CrossReference/AbstractReader.php
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
<?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\CrossReference;
|
||||
|
||||
use setasign\Fpdi\PdfParser\PdfParser;
|
||||
use setasign\Fpdi\PdfParser\Type\PdfDictionary;
|
||||
use setasign\Fpdi\PdfParser\Type\PdfToken;
|
||||
use setasign\Fpdi\PdfParser\Type\PdfTypeException;
|
||||
|
||||
/**
|
||||
* Abstract class for cross-reference reader classes.
|
||||
*
|
||||
* @package setasign\Fpdi\PdfParser\CrossReference
|
||||
*/
|
||||
abstract class AbstractReader
|
||||
{
|
||||
/**
|
||||
* @var PdfParser
|
||||
*/
|
||||
protected $parser;
|
||||
|
||||
/**
|
||||
* @var PdfDictionary
|
||||
*/
|
||||
protected $trailer;
|
||||
|
||||
/**
|
||||
* AbstractReader constructor.
|
||||
*
|
||||
* @param PdfParser $parser
|
||||
* @throws CrossReferenceException
|
||||
* @throws PdfTypeException
|
||||
*/
|
||||
public function __construct(PdfParser $parser)
|
||||
{
|
||||
$this->parser = $parser;
|
||||
$this->readTrailer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the trailer dictionary.
|
||||
*
|
||||
* @return PdfDictionary
|
||||
*/
|
||||
public function getTrailer()
|
||||
{
|
||||
return $this->trailer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the trailer dictionary.
|
||||
*
|
||||
* @throws CrossReferenceException
|
||||
* @throws PdfTypeException
|
||||
*/
|
||||
protected function readTrailer()
|
||||
{
|
||||
try {
|
||||
$trailerKeyword = $this->parser->readValue(null, PdfToken::class);
|
||||
if ($trailerKeyword->value !== 'trailer') {
|
||||
throw new CrossReferenceException(
|
||||
\sprintf(
|
||||
'Unexpected end of cross reference. "trailer"-keyword expected, got: %s.',
|
||||
$trailerKeyword->value
|
||||
),
|
||||
CrossReferenceException::UNEXPECTED_END
|
||||
);
|
||||
}
|
||||
} catch (PdfTypeException $e) {
|
||||
throw new CrossReferenceException(
|
||||
'Unexpected end of cross reference. "trailer"-keyword expected, got an invalid object type.',
|
||||
CrossReferenceException::UNEXPECTED_END,
|
||||
$e
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
$trailer = $this->parser->readValue(null, PdfDictionary::class);
|
||||
} catch (PdfTypeException $e) {
|
||||
throw new CrossReferenceException(
|
||||
'Unexpected end of cross reference. Trailer not found.',
|
||||
CrossReferenceException::UNEXPECTED_END,
|
||||
$e
|
||||
);
|
||||
}
|
||||
|
||||
$this->trailer = $trailer;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user