You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.5 KiB
67 lines
1.5 KiB
<?php
|
|
|
|
namespace App\Ingest;
|
|
|
|
use Symfony\Component\Process\Exception\ProcessFailedException;
|
|
use Symfony\Component\Process\Process;
|
|
|
|
class DocxConvertor extends AbstractConvertor
|
|
{
|
|
public function execute()
|
|
{
|
|
// $this->convertToText();
|
|
//
|
|
// $convertor = new TextConvertor($this->storage, "$this->directoryPath/document.txt");
|
|
//
|
|
// $convertor->execute();
|
|
|
|
$this->convertToPDF();
|
|
|
|
$convertor = new PDFConvertor($this->storage, "$this->directoryPath/document.pdf");
|
|
|
|
$convertor->execute();
|
|
}
|
|
|
|
protected function convertToText()
|
|
{
|
|
(new Process(['export HOME=' . env('USER_HOME_PATH')]))->run();
|
|
|
|
$process = new Process([
|
|
'soffice',
|
|
'--headless',
|
|
'--convert-to',
|
|
'txt',
|
|
$this->storage->path($this->path),
|
|
'--outdir',
|
|
$this->storage->path($this->directoryPath)
|
|
]);
|
|
|
|
$process->run();
|
|
|
|
if (!$process->isSuccessful()) {
|
|
throw new ProcessFailedException($process);
|
|
}
|
|
|
|
$this->deleteOriginalDocument();
|
|
}
|
|
|
|
protected function convertToPDF()
|
|
{
|
|
(new Process(['export HOME=' . env('USER_HOME_PATH')]))->run();
|
|
|
|
$process = new Process([
|
|
'unoconv',
|
|
'-f',
|
|
'pdf',
|
|
$this->storage->path($this->path),
|
|
]);
|
|
|
|
$process->run();
|
|
|
|
if (!$process->isSuccessful()) {
|
|
throw new ProcessFailedException($process);
|
|
}
|
|
|
|
$this->deleteOriginalDocument();
|
|
}
|
|
}
|