]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6814 @0.25
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 21 Mar 2024 10:31:23 +0000 (11:31 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 21 Mar 2024 10:31:23 +0000 (11:31 +0100)
app/Http/Controllers/Admin/Operations/Tools/PDFLayers.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
resources/views/tools/sidebar.blade.php

diff --git a/app/Http/Controllers/Admin/Operations/Tools/PDFLayers.php b/app/Http/Controllers/Admin/Operations/Tools/PDFLayers.php
new file mode 100644 (file)
index 0000000..7cf4182
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Fields\StandardFile;
+use Cubist\Backpack\Magic\Fields\Text;
+use Cubist\Backpack\Magic\Form;
+use Cubist\PDF\PDFTools;
+use Cubist\Util\ArrayUtil;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Str;
+use Cubist\Util\Zip;
+use Fluidbook\Tools\Document;
+use Fluidbook\Tools\Jobs\ProcessFile;
+use Fluidbook\Tools\Jobs\ProcessPage;
+use Symfony\Component\HttpFoundation\File\UploadedFile;
+
+trait PDFLayers
+{
+    public function pdflayers()
+    {
+        $form = new Form(backpack_url('tools/dopdflayers'));
+        $form->setEnctype('multipart/form-data');
+        $form->setTitle(__('Séparer les calques d\'un PDF'));
+        $form->setSubmitLabel(__('Séparer'));
+        $form->setSubmitIcon('las la-hand-scissors');
+        $form->addField('file', StandardFile::class, __('Fichier pdf'), ['accept' => '.pdf']);
+        return view('tools.form', ['form' => $form]);
+    }
+
+    public function dopdflayers($args = [])
+    {
+        set_time_limit(0);
+        $dir = Files::tmpdir();
+
+        /** @var UploadedFile $file */
+        $file = request()->file('file');
+
+        $n = $file->getClientOriginalName();
+        $e = explode('.', $n);
+        array_pop($e);
+        $n = Str::slug(implode('.', $e));
+
+        $variants = [
+            'texts' => [false, false, true],
+            'vectors' => [false, true, false],
+            'images' => [true, false, false],
+            'texts-vectors' => [false, true, true],
+            'texts-images' => [true, false, true],
+            'vectors-images' => [true, true, false],
+            'texts-vectors-images' => [true, true, true],
+        ];
+
+        foreach ($variants as $name => $s) {
+            PDFTools::filter($file->getPathname(), $dir . '/' . $name . '.pdf', $s[0], $s[1], $s[2]);
+        }
+
+        $ext = 'zip';
+        $fname = $file->getClientOriginalName();
+        $tmpfile = Files::tempnam() . '.' . $ext;
+        Zip::archive($dir, $tmpfile);
+
+        Files::rmdir($dir);
+
+        return response()->download($tmpfile, $n . '.' . $ext)->deleteFileAfterSend(true);
+    }
+}
index d297b584c19fc02b58f95a3f1633349441e5c0b7..079549290ec2dd84db99e74bc6525c43e9f6f13c 100644 (file)
@@ -18,6 +18,7 @@ use App\Http\Controllers\Admin\Operations\Tools\ImagesResizer;
 use App\Http\Controllers\Admin\Operations\Tools\ImportFluidbookSettings;
 use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel;
 use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
+use App\Http\Controllers\Admin\Operations\Tools\PDFLayers;
 use App\Http\Controllers\Admin\Operations\Tools\SASSCompiler;
 use App\Http\Controllers\Admin\Operations\Tools\StaticSiteUploader;
 use App\Http\Controllers\Admin\Operations\Tools\SVGCleaner;
@@ -45,6 +46,7 @@ class ToolsController extends Controller
     use PDF2SVGOperation;
     use ImportFluidbookSettings;
     use StaticSiteUploader;
+    use PDFLayers;
 
     protected function index($tool, $args = '')
     {
index db68fc664fadf42cc6a52942a28a5160bb06cfe2..7a1082d9389afa157ecbaa7184ec9c1f2b8813d1 100644 (file)
@@ -3,6 +3,9 @@
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('opentools/pdf2svg') }}'><i
                 class='nav-icon la la-images'></i>
             <span>{{__('Conversion de PDF en images')}}</span></a></li>
+    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/pdflayers') }}'><i
+                class="las la-hand-scissors"></i>
+            <span>{{__('Séparer les couches d\'un PDF')}}</span></a></li>
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/resizer') }}'><i
                 class="nav-icon las la-compress-arrows-alt"></i>
             <span>{{__('Redimensionner des images')}}</span></a></li>
@@ -47,7 +50,7 @@
             <span>{{__('SVG Sprites')}}</span></a></li>
     @can('webflow:admin')
         <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tool-webflow') }}'><i class="nav-icon la"><img
-                    src="/images/icons/icon-webflow.svg" /></i>
+                        src="/images/icons/icon-webflow.svg"/></i>
                 <span>{{__('Sites Webflow')}}</span></a></li>
     @endcan()
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('opentools/sasscompiler') }}'><i