From 555d0952acba71436c0b72aab7da45bc4000f3f4 Mon Sep 17 00:00:00 2001 From: Jan Slabon Date: Fri, 27 Jun 2025 12:25:09 +0200 Subject: [PATCH 1/4] Added check for false of readBytes() to avoid PHP warning --- src/PdfParser/CrossReference/FixedReader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PdfParser/CrossReference/FixedReader.php b/src/PdfParser/CrossReference/FixedReader.php index 603bde3..7871f67 100644 --- a/src/PdfParser/CrossReference/FixedReader.php +++ b/src/PdfParser/CrossReference/FixedReader.php @@ -71,7 +71,7 @@ public function getOffsetFor($objectNumber) $position = $offset + 20 * ($objectNumber - $startObject); $this->reader->ensure($position, 20); $line = $this->reader->readBytes(20); - if ($line[17] === 'f') { + if ($line === false || $line[17] === 'f') { return false; } From 1e106ba1375168bf1380b06d8c31f6577ddd4e86 Mon Sep 17 00:00:00 2001 From: Jan Slabon Date: Fri, 27 Jun 2025 12:25:36 +0200 Subject: [PATCH 2/4] Added test to reproduce issue 235 --- .../PdfParser/CrossReference/FixedReaderTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/functional/PdfParser/CrossReference/FixedReaderTest.php b/tests/functional/PdfParser/CrossReference/FixedReaderTest.php index 7de2c60..c613654 100644 --- a/tests/functional/PdfParser/CrossReference/FixedReaderTest.php +++ b/tests/functional/PdfParser/CrossReference/FixedReaderTest.php @@ -204,6 +204,21 @@ public function testGetOffset($table, $expectedOffsets) } } + public function testGetOffsetWhileStreamWasReset() + { + $table = "0 2\n" . + "0000000000 65535 f \n" . + "0000001000 00000 n \n" . + "trailer<>"; + + $reader = StreamReader::createByString($table); + $xref = new FixedReader(new PdfParser($reader)); + $stream = $reader->getStream(); + \ftruncate($stream, 40); + + $this->assertFalse($xref->getOffsetFor(1)); + } + /** * @throws CrossReferenceException */ From ce266f85cc732a11b964be732cdae9f2eaf4cb28 Mon Sep 17 00:00:00 2001 From: Jan Slabon Date: Mon, 30 Jun 2025 11:02:51 +0200 Subject: [PATCH 3/4] Fixed @throws doc-block annotation --- src/PdfParser/CrossReference/AbstractReader.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PdfParser/CrossReference/AbstractReader.php b/src/PdfParser/CrossReference/AbstractReader.php index 8953e63..f7ac23b 100644 --- a/src/PdfParser/CrossReference/AbstractReader.php +++ b/src/PdfParser/CrossReference/AbstractReader.php @@ -57,7 +57,6 @@ public function getTrailer() * Read the trailer dictionary. * * @throws CrossReferenceException - * @throws PdfTypeException */ protected function readTrailer() { From ec1f3ee712dde632c67cbae841ffd627b1fc915b Mon Sep 17 00:00:00 2001 From: Jan Slabon Date: Mon, 30 Jun 2025 11:04:10 +0200 Subject: [PATCH 4/4] Fixed @throws doc-block annotation --- src/PdfParser/CrossReference/AbstractReader.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PdfParser/CrossReference/AbstractReader.php b/src/PdfParser/CrossReference/AbstractReader.php index f7ac23b..2127f44 100644 --- a/src/PdfParser/CrossReference/AbstractReader.php +++ b/src/PdfParser/CrossReference/AbstractReader.php @@ -35,7 +35,6 @@ abstract class AbstractReader * * @param PdfParser $parser * @throws CrossReferenceException - * @throws PdfTypeException */ public function __construct(PdfParser $parser) {