From b734fbb4917e27df4658924e6ab4e6cc84123ec4 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 16 Jul 2025 14:17:29 +0200 Subject: [PATCH] wip #7556 @3 --- .../FluidbookPublication/CompositionOperation.php | 6 +++++- app/Models/FluidbookDocument.php | 10 ++++++++-- app/Models/FluidbookPublication.php | 5 +++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php index 5b069386f..6e186b3f2 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/CompositionOperation.php @@ -25,7 +25,7 @@ trait CompositionOperation Route::match(['get'], $segment . '/docInfos/{doc_id}', $controller . '@docInfos'); Route::match(['get'], $segment . '/{fluidbook_id}/pdfarchive/{time}', $controller . '@pdfArchive'); Route::match(['get'], $segment . '/{fluidbook_id}/{type}/{page}.{ext}', $controller . '@getPageAsset') - ->whereIn('type', ['originalpdf', 'texts', 'index', 'layout', 'links']); + ->whereIn('type', ['originalpdf', 'texts', 'index', 'layout', 'links', 'accessible']); } protected function setupCompositionDefaults() @@ -47,6 +47,10 @@ trait CompositionOperation $file = $fb->getLinksFile($page); return XSendFileController::sendfile($file, headers: ['Content-type', 'text/plain']); } + if ($type === 'accessible') { + $file = $fb->getAccessibleFile($page, $ext); + return XSendFileController::sendfile($file, headers: ['Content-type', Files::getMimeType($file)]); + } $types = ['texts' => FluidbookDocument::TEXT_PLAIN, 'index' => FluidbookDocument::TEXT_INDEX, 'layout' => FluidbookDocument::TEXT_LAYOUT]; if (!isset($types[$type])) { abort(404, 'Text type not found'); diff --git a/app/Models/FluidbookDocument.php b/app/Models/FluidbookDocument.php index de07efbcf..ee894ef29 100644 --- a/app/Models/FluidbookDocument.php +++ b/app/Models/FluidbookDocument.php @@ -93,8 +93,6 @@ class FluidbookDocument extends ToolboxModel $this->splitPDF(); $this->updateProgression($uploadID, __('Extraction des textes'), 1.6); $this->extractTexts(); - $this->updateProgression($uploadID, __('Extraction du HTML'), 1.75); - $this->extractMarkdown(); $this->updateProgression($uploadID, __('Extraction des liens'), 1.9); $this->extractLinks(); $this->updateProgression($uploadID, __('Conversion des pages'), 2); @@ -139,6 +137,14 @@ class FluidbookDocument extends ToolboxModel } } + public function getMarkdown($page) + { + if (!file_exists($this->path('docling/p1.md'))) { + $this->extractMarkdown(); + } + return $this->path('docling/p' . $page . '.md'); + } + public function echoStatus($id) { if (!$this->processSync) { diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index df76a1968..37cf7896a 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -461,6 +461,11 @@ class FluidbookPublication extends ToolboxStatusModel return self::_getDocument($compo[0])->getHightlightFile($compo[1], $this->search_mode ?: 'standard', $this->ignoreSearchSeparators); } + public function getAccessibleFile($page,$format='md'){ + $compo = $this->getComposition()[$page]; + return self::_getDocument($compo[0])->getMarkdown($compo[1]); + } + public function getPDFSplitSource($page) { if ($page > $this->getPagesNumber()) { -- 2.39.5