Skip to content

Commit

Permalink
Merge pull request Setasign#67 from Setasign/development
Browse files Browse the repository at this point in the history
Code style and exception handling/forwarding
  • Loading branch information
JanSlabon authored Sep 13, 2018
2 parents bb125e5 + 4dc959f commit 99a3181
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 14 deletions.
3 changes: 2 additions & 1 deletion src/Fpdi.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
namespace setasign\Fpdi;

use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
use setasign\Fpdi\PdfParser\PdfParserException;
use setasign\Fpdi\PdfParser\Type\PdfIndirectObject;
use setasign\Fpdi\PdfParser\Type\PdfNull;

Expand Down Expand Up @@ -84,7 +85,7 @@ public function getTemplateSize($tpl, $width = null, $height = null)
/**
* @inheritdoc
* @throws CrossReferenceException
* @throws PdfParser\PdfParserException
* @throws PdfParserException
*/
protected function _putimages()
{
Expand Down
3 changes: 2 additions & 1 deletion src/PdfParser/CrossReference/AbstractReader.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ protected function readTrailer()
} catch (PdfTypeException $e) {
throw new CrossReferenceException(
'Unexpected end of cross reference. "trailer"-keyword expected, got an invalid object type.',
CrossReferenceException::UNEXPECTED_END
CrossReferenceException::UNEXPECTED_END,
$e
);
}

Expand Down
16 changes: 9 additions & 7 deletions src/PdfParser/CrossReference/CrossReference.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,11 @@ public function getOffsetFor($objectNumber)
* @param int $objectNumber
* @return PdfIndirectObject
* @throws CrossReferenceException
* @throws PdfTypeException
*/
public function getIndirectObject($objectNumber)
{
$offset = $this->getOffsetFor($objectNumber);
if (false === $offset) {
if ($offset === false) {
throw new CrossReferenceException(
\sprintf('Object (id:%s) not found.', $objectNumber),
CrossReferenceException::OBJECT_NOT_FOUND
Expand All @@ -156,11 +155,14 @@ public function getIndirectObject($objectNumber)
$parser->getTokenizer()->clearStack();
$parser->getStreamReader()->reset($offset + $this->fileHeaderOffset);

$object = $parser->readValue(null, PdfIndirectObject::class);
if ($object === false || !($object instanceof PdfIndirectObject)) {
try {
/** @var PdfIndirectObject $object */
$object = $parser->readValue(null, PdfIndirectObject::class);
} catch (PdfTypeException $e) {
throw new CrossReferenceException(
\sprintf('Object (id:%s) not found at location (%s).', $objectNumber, $offset),
CrossReferenceException::OBJECT_NOT_FOUND
CrossReferenceException::OBJECT_NOT_FOUND,
$e
);
}

Expand Down Expand Up @@ -265,7 +267,6 @@ protected function checkForEncryption(PdfDictionary $dictionary)
*
* @return int The byte-offset position of the first cross-reference.
* @throws CrossReferenceException
* @throws PdfTypeException
*/
protected function findStartXref()
{
Expand Down Expand Up @@ -294,7 +295,8 @@ protected function findStartXref()
} catch (PdfTypeException $e) {
throw new CrossReferenceException(
'Invalid data after startxref keyword.',
CrossReferenceException::INVALID_DATA
CrossReferenceException::INVALID_DATA,
$e
);
}

Expand Down
2 changes: 1 addition & 1 deletion src/PdfParser/Type/PdfDictionary.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public static function parse(Tokenizer $tokenizer, StreamReader $streamReader, P
}

$key = $parser->readValue($token);
if (false === $key) {
if ($key === false) {
return false;
}

Expand Down
4 changes: 3 additions & 1 deletion src/Tfpdf/Fpdi.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

use setasign\Fpdi\FpdiTrait;
use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
use setasign\Fpdi\PdfParser\PdfParserException;
use setasign\Fpdi\PdfParser\Type\PdfIndirectObject;
use setasign\Fpdi\PdfParser\Type\PdfNull;

Expand Down Expand Up @@ -84,7 +85,8 @@ public function getTemplateSize($tpl, $width = null, $height = null)

/**
* @inheritdoc
* @throws \setasign\Fpdi\PdfParser\PdfParserException
* @throws CrossReferenceException
* @throws PdfParserException
*/
public function _putimages()
{
Expand Down
10 changes: 7 additions & 3 deletions tests/functional/PdfParser/PdfParserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace setasign\Fpdi\functional\PdfParser;

use PHPUnit\Framework\TestCase;
use setasign\Fpdi\Fpdi;
use setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException;
use setasign\Fpdi\PdfParser\PdfParser;
use setasign\Fpdi\PdfParser\StreamReader;
use setasign\Fpdi\PdfParser\Type\PdfArray;
Expand All @@ -15,7 +15,6 @@
use setasign\Fpdi\PdfParser\Type\PdfName;
use setasign\Fpdi\PdfParser\Type\PdfNull;
use setasign\Fpdi\PdfParser\Type\PdfNumeric;
use setasign\Fpdi\PdfParser\Type\PdfStream;
use setasign\Fpdi\PdfParser\Type\PdfString;
use setasign\Fpdi\PdfParser\Type\PdfToken;

Expand Down Expand Up @@ -377,6 +376,11 @@ public function testGetIndirectObjectWithInvalidType()
__DIR__ . '/../../_files/pdfs/specials/invalid-type-at-object-offset.pdf'
));

$parser->getIndirectObject(6);
try {
$parser->getIndirectObject(6);
} catch (CrossReferenceException $e) {
$this->assertSame(CrossReferenceException::OBJECT_NOT_FOUND, $e->getCode());
throw $e->getPrevious();
}
}
}

0 comments on commit 99a3181

Please sign in to comment.