protected function runOcr() { try { $pages = $this->pdf->getPages(); } catch (\Exception $e) { static::raiseError(get_class($this->pdf) . '::getPages() returned false!', false, $e); return false; } if (empty($pages)) { return true; } try { $storage = new \Mtlda\Controllers\StorageController(); } catch (\Exception $e) { static::raiseError(__METHOD__ . '(), failed to load StorageController!', false, $e); return false; } if (!($tempDir = $storage->createTempDir('ocr_'))) { static::raiseError(get_class($storage) . '::createTempDir() returned false!'); return false; } if (!file_exists($tempDir) || !is_dir($tempDir)) { static::raiseError(get_class($storage) . '::createTempDir() has not returned a valid directory!'); return false; } foreach ($pages as $id => $page) { try { $objects = $page->getXObjects(); } catch (\Exception $e) { $this->unlinkDirectory($tempDir); static::raiseError(get_class($page) . '::getXObjects() returned false!', false, $e); return false; } foreach ($objects as $id => $object) { if (!is_a($object, 'Smalot\\PdfParser\\XObject\\Image')) { continue; } try { $content = $object->getContent(); } catch (\Exception $e) { $this->unlinkDirectory($tempDir); static::raiseError(get_class($object) . '::getContent() returned false!', false, $e); return false; } if (!($tempFile = tempnam($tempDir, 'pdfcontent_'))) { $this->unlinkDirectory($tempDir); static::raiseError(__METHOD__ . '(), tempnam() returned false!'); return false; } if (!file_put_contents($tempFile, $content)) { $this->unlinkDirectory($tempDir); static::raiseError(__METHOD__ . '(), file_put_contents() returned false!'); return false; } } } if (($text = $this->ocr->scanDirectory($tempDir)) === false) { static::raiseError(get_class($this->ocr) . '::scanDirectory() returned false!'); return false; } if (!$this->unlinkDirectory($tempDir)) { static::raiseError(__CLASS__ . '::unlinkDirectory() returned false!'); return false; } if (!isset($text) || empty($text) || !is_array($text)) { return array(); } return $text; }