Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
Expand Down Expand Up @@ -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();

Expand Down
2 changes: 1 addition & 1 deletion src/Document/Object/Decorator/Page.php
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
7 changes: 3 additions & 4 deletions src/Extraction/Text/TextExtractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -13,7 +12,7 @@ class TextExtractor {
* @param list<PositionedTextElement> $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 = '';
Expand All @@ -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;
Expand All @@ -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
Expand Down
Loading