diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php index b4bd354..169919b 100644 --- a/app/Http/Controllers/FileController.php +++ b/app/Http/Controllers/FileController.php @@ -7,8 +7,8 @@ use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Storage; use Illuminate\Http\UploadedFile; use GuzzleHttp\Exception\BadResponseException; -use Illuminate\Support\Str; use Symfony\Component\Process\Process; +use Symfony\Component\Process\Exception\ProcessFailedException; class FileController extends Controller { @@ -66,25 +66,22 @@ class FileController extends Controller $fileId = request()->input('file_id'); Storage::disk('local')->put('tmp/' . $fileId . '.md', $mdFileContent); - $tmpMdFilePath = Storage::path('tmp/' . $fileId . '.md'); + $tmpFilePath = Storage::path('tmp/' . $fileId); - $pandoc = new Process([ - 'pandoc', - '-f', - 'markdown', - '-t', - 'odt', - $tmpMdFilePath - ]); - - $pandoc->start(); - - while ($pandoc->isRunning()) { - // + $process = new Process(['pandoc', '-f', 'markdown_strict', $tmpFilePath . '.md', '-t', 'html']); + $process->run(); + if (!$process->isSuccessful()) { + throw new ProcessFailedException($process); } - $odtFileContent = $pandoc->getOutput(); - Storage::disk('local')->put('tmp/' . $fileId . '.odt', $odtFileContent); + $output = str_replace('./contracts-images', config('app.url') . '/contracts-images', $process->getOutput()); + Storage::disk('local')->put('tmp/' . $fileId . '.html', $output); + + $process = new Process([ 'pandoc', '-f', 'html', $tmpFilePath . '.html', '-t', 'odt', '-o', $tmpFilePath . '.odt']); + $process->run(); + if (!$process->isSuccessful()) { + throw new ProcessFailedException($process); + } return response()->json([ 'path' => 'tmp/' . $fileId . '.odt' @@ -112,6 +109,7 @@ class FileController extends Controller $success = Storage::delete([ "tmp/{$id}.md", "tmp/{$id}.odt", + "tmp/{$id}.html", "contracts/{$id}.md", ]); return response()->json(['success' => $success]);