diff --git a/src/Document/ContentStream/PositionedText/PositionedTextElement.php b/src/Document/ContentStream/PositionedText/PositionedTextElement.php index fe48950..256c0b2 100644 --- a/src/Document/ContentStream/PositionedText/PositionedTextElement.php +++ b/src/Document/ContentStream/PositionedText/PositionedTextElement.php @@ -3,7 +3,6 @@ namespace PrinsFrank\PdfParser\Document\ContentStream\PositionedText; use PrinsFrank\PdfParser\Document\ContentStream\PositionedText\TextSegment\TextSegment; -use PrinsFrank\PdfParser\Document\Document; use PrinsFrank\PdfParser\Document\Object\Decorator\Font; use PrinsFrank\PdfParser\Document\Object\Decorator\Page; use PrinsFrank\PdfParser\Exception\ParseFailureException; @@ -18,18 +17,18 @@ public function __construct( public TextState $textState, ) {} - public function getFont(Document $document, Page $page): Font { + public function getFont(Page $page): Font { if ($this->textState->fontName === null) { throw new ParseFailureException('Unable to locate font for text element'); } - return $page->getFontDictionary()?->getObjectForReference($document, $this->textState->fontName, Font::class) + return $page->getFontDictionary()?->getObjectForReference($page->document, $this->textState->fontName, Font::class) ?? throw new ParseFailureException(sprintf('Unable to locate font with reference "/%s"', $this->textState->fontName->value)); } /** @throws ParseFailureException */ - public function getText(Document $document, Page $page): string { - $font = $this->getFont($document, $page); + public function getText(Page $page): string { + $font = $this->getFont($page); $differences = $font->getDifferences(); $encoding = $font->getEncoding(); $toUnicodeCMap = $font->getToUnicodeCMap() ?? $font->getToUnicodeCMapDescendantFont(); @@ -76,8 +75,8 @@ public function getHeight(): float { * * Reconstructed here because Tj/TJ do not advance the text matrix in this parser. */ - public function getAdvanceWidth(Document $document, Page $page): float { - $font = $this->getFont($document, $page); + public function getAdvanceWidth(Page $page): float { + $font = $this->getFont($page); $scaleX = $this->absoluteMatrix->scaleX; $fontSize = $this->textState->getFontSize(); diff --git a/src/Document/Object/Decorator/Page.php b/src/Document/Object/Decorator/Page.php index 7c1ecef..2f1723f 100644 --- a/src/Document/Object/Decorator/Page.php +++ b/src/Document/Object/Decorator/Page.php @@ -26,7 +26,7 @@ public function getPositionedTextElements(): array { /** @throws PdfParserException */ public function getText(): string { - return TextExtractor::extractText($this->getPositionedTextElements(), $this->document, $this); + return TextExtractor::extractText($this->getPositionedTextElements(), $this); } /** @throws PdfParserException */ diff --git a/src/Extraction/Text/TextExtractor.php b/src/Extraction/Text/TextExtractor.php index 4ea8dca..4847cc9 100644 --- a/src/Extraction/Text/TextExtractor.php +++ b/src/Extraction/Text/TextExtractor.php @@ -3,7 +3,6 @@ namespace PrinsFrank\PdfParser\Extraction\Text; use PrinsFrank\PdfParser\Document\ContentStream\PositionedText\PositionedTextElement; -use PrinsFrank\PdfParser\Document\Document; use PrinsFrank\PdfParser\Document\Object\Decorator\Page; use PrinsFrank\PdfParser\Exception\PdfParserException; use PrinsFrank\PdfParser\Extraction\Text\TextGrouping\LineGrouping\TextOverlapStrategy; @@ -13,7 +12,7 @@ class TextExtractor { * @param list $positionedTextElements * @throws PdfParserException */ - public static function extractText(array $positionedTextElements, Document $document, Page $page): string { + public static function extractText(array $positionedTextElements, Page $page): string { $lineGroupedElements = TextOverlapStrategy::group($positionedTextElements); $text = ''; @@ -24,7 +23,7 @@ public static function extractText(array $positionedTextElements, Document $docu $previousTextElementOnLine = null; foreach ($positionedTextElementsForLine as $positionedTextElement) { - $elementText = $positionedTextElement->getText($document, $page); + $elementText = $positionedTextElement->getText($page); if ($elementText === '') { $previousTextElementOnLine = $positionedTextElement; continue; @@ -33,7 +32,7 @@ public static function extractText(array $positionedTextElements, Document $docu if ($previousTextElementOnLine !== null) { $gap = $positionedTextElement->absoluteMatrix->offsetX - $previousTextElementOnLine->absoluteMatrix->offsetX - - $previousTextElementOnLine->getAdvanceWidth($document, $page); + - $previousTextElementOnLine->getAdvanceWidth($page); $wordBreakThreshold = $previousTextElementOnLine->textState->getFontSize() * $previousTextElementOnLine->absoluteMatrix->scaleX