]> _ Git - fluidbook-toolbox.git/commitdiff
#7898 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 15 Jan 2026 17:23:03 +0000 (18:23 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 15 Jan 2026 17:23:03 +0000 (18:23 +0100)
app/Fluidbook/Compiler/Links.php
app/Jobs/FluidbookImagesPreprocess.php
app/Jobs/OCR.php

index 5d52c5b9fb1eb804fa2128c18d0b495320924300..7252b66dd08f6e51c125e6e831ca475858be4847 100644 (file)
@@ -7,8 +7,6 @@ use App\Fluidbook\Link\Link;
 use App\Fluidbook\Link\LinksData;
 use App\Jobs\OCR;
 use App\SubForms\Link\Base;
-use Cubist\Util\CommandLine\Docling;
-use Cubist\Util\Graphics\Color;
 use Cubist\Util\Text;
 use Cubist\Util\Url;
 use Fluidbook\Tools\Links\AnchorLink;
@@ -531,30 +529,39 @@ trait Links
         $this->config->push('triggersLinks', ['page' => $page, 'link' => $link, 'delay' => $delay]);
     }
 
-    public function getLinkAlternativeText($link, $returnJob = false)
+    public function getLinkAlternativeText($link, $returnJobs = false)
     {
-        if (!$link->getOCR()) {
-            return '';
+        $ocr = $link->getOCR();
+        if ($returnJobs) {
+            $res = [];
+        } else {
+            $res = '';
         }
-
-        if (Url::isDistant($link->to)) {
-            return '';
+        if (!$ocr) {
+            return $res;
         }
-        $file = $this->wdir . '/' . $link->to;
 
-        if (!file_exists($file)) {
-            return '';
-        }
-        $ext = ['jpg', 'jpeg', 'png', 'svg', 'pdf'];
-        $f = new \SplFileInfo($file);
-        if (!in_array($f->getExtension(), $ext)) {
-            return '';
-        }
+        foreach ($ocr as $attr) {
+            if (Url::isDistant($link->$attr)) {
+                continue;
+            }
+            $file = $this->wdir . '/' . $link->$attr;
 
-        if ($returnJob) {
-            return new OCR($file, $this->getFluidbook()->locale);
+            if (!file_exists($file)) {
+                continue;
+            }
+            $ext = ['jpg', 'jpeg', 'png', 'svg', 'pdf'];
+            $f = new \SplFileInfo($file);
+            if (!in_array($f->getExtension(), $ext)) {
+                continue;
+            }
+
+            if ($returnJobs) {
+                $res[] = new OCR($file, $this->getFluidbook()->locale);
+            } else {
+                $res .= Farm::OCR($file, $this->getFluidbook()->locale);
+            }
         }
-        return Farm::OCR($file, $this->getFluidbook()->locale);
+        return $res;
     }
-
 }
index 381d5bfeab060c8fa598d60be600c2429b41cd75..d039d8d835eb92701794430f857d3feaf3b2b688 100644 (file)
@@ -5,6 +5,7 @@ namespace App\Jobs;
 use App\Fluidbook\Compiler\Compiler;
 use App\Models\FluidbookPublication;
 use Cubist\Util\ArrayUtil;
+use Fluidbook\Tools\Links\Link;
 use Illuminate\Support\Facades\Log;
 
 class FluidbookImagesPreprocess extends Base
@@ -81,7 +82,27 @@ class FluidbookImagesPreprocess extends Base
         }
 
         $this->book->getLinksAndRulers($links, $rulers);
-
+        $compiler = new Compiler($this->book);
+        $i = 0;
+        foreach ($links as $link) {
+            $l = Link::getInstance($i, $link, $compiler);
+            if (null === $l) {
+                continue;
+            }
+            $jobs = $compiler->getLinkAlternativeText($l, true);
+            if (!$jobs) {
+                continue;
+            }
+            $this->jobs += $jobs;
+            foreach ($jobs as $job) {
+                if ($this->_sync) {
+                    $job->handle();
+                } else {
+                    dispatch($job);
+                }
+            }
+            $i++;
+        }
 
         while (true) {
             if ($this->_checkJobs()) {
index e886c08554196048c32c58fa6f0c7ba330f31f7c..ffe713db4b13c47e7eb650fbb41b17a2e25ef63f 100644 (file)
@@ -11,6 +11,7 @@ class OCR extends BaseStatus
 
     public function __construct($file, $locale = null)
     {
+        $this->onQueue('fluidbookprocess');
         $this->file = $file;
         $this->locale = $locale;
     }