parser = new Parser(); } /** * @return list */ public function findSignatureZones(string $fileContent): array { $pdf = $this->parser->parseContent($fileContent); $zones = []; $defaults = $pdf->getObjectsByType('Pages'); $defaultPage = reset($defaults); $defaultPageDetails = $defaultPage->getDetails(); $zoneIndex = 0; foreach ($pdf->getPages() as $index => $page) { $details = $page->getDetails(); $pdfPage = new PDFPage( $index, (float) ($details['MediaBox'][2] ?? $defaultPageDetails['MediaBox'][2]), (float) ($details['MediaBox'][3] ?? $defaultPageDetails['MediaBox'][3]), ); foreach ($page->getDataTm() as $dataTm) { if (str_starts_with((string) $dataTm[1], self::ZONE_SIGNATURE_START)) { $zones[] = new PDFSignatureZone($zoneIndex, (float) $dataTm[0][4], (float) $dataTm[0][5], $this->defaultHeight, $this->defaultWidth, $pdfPage); ++$zoneIndex; } } } return $zones; } }