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;
$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;
}
-
}
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
}
$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()) {