storage = Storage::disk('local'); $this->path = $path; $this->type = $type; } /** * @throws \Exception */ public function execute() { if ($this->type === 'txt') { $convertor = new TextConvertor($this->storage, $this->path); } else if ($this->type === 'pdf') { $convertor = new PDFConvertor($this->storage, $this->path); } else if ($this->type === 'docx') { $convertor = new DocxConvertor($this->storage, $this->path); } else { $convertor = new OtherConvertor($this->storage, $this->path); } $convertor->execute(); //$this->convertToHtml(); } private function convertToHtml() { $office = new Office(); $success = $office->run( 'html:HTML:EmbedImages', $this->storage->path($this->path), $this->storage->path('contracts') ); if (! $success) { throw new \Exception('Something went wrong while tried converting to HTML for file: ' . $this->path); } $this->storage->delete($this->path); $this->path = str_replace(".$this->type", '.html', $this->path); } private function convertToXML() { //Convert the file to xml using pdftohtml to xml and run a python scrypt to fix the paragraphs $process = new Process([ 'pdftohtml', '-xml', '-i', $this->storage->path($this->path) ]); $process->run(); if (!$process->isSuccessful()) { throw new ProcessFailedException($process); } $this->storage->delete($this->path); $this->path = str_replace(".$this->type", '.xml', $this->path); } }