]> _ Git - cubist_pdf.git/commitdiff
wip #7005 @0.25
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 15 Jul 2024 13:40:37 +0000 (15:40 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 15 Jul 2024 13:40:37 +0000 (15:40 +0200)
.idea/deployment.xml
src/PDFTools.php

index 43d3d7bc1e1394adf2ac1d9c759db33b33e17eed..3a42d5f41a3bc4775c970644794f07dfd5aba380 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="PublishConfigData" autoUpload="Always" serverName="alphaville.cubedesigners.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" showAutoUploadSettingsWarning="false">
+  <component name="PublishConfigData" autoUpload="Always" serverName="toolbox.fluidbook.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" showAutoUploadSettingsWarning="false">
     <option name="confirmBeforeUploading" value="false" />
     <serverData>
       <paths name="alpha.toolbox.fluidbook.com">
           </excludedPaths>
         </serverdata>
       </paths>
+      <paths name="bastide-resah.fluidbook.com">
+        <serverdata>
+          <mappings>
+            <mapping local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
       <paths name="demo1.cubedesigners.com">
         <serverdata>
           <mappings>
           </mappings>
         </serverdata>
       </paths>
+      <paths name="elearning.fluidbook.com">
+        <serverdata>
+          <mappings>
+            <mapping local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
       <paths name="etatpur.ei-plateforme1.com">
         <serverdata>
           <mappings>
index 4fe518d69c48cc4d46eba6ebd67d904e0473b933..d7af2b66911365b0ef33d12cd014da356aeb2230 100644 (file)
@@ -20,6 +20,8 @@ class PDFTools
      * @return string
      */
 
+    const TIMEOUT_SVG = '<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/><!-- TIMEOUT -->';
+
     public static function resource_path($path)
     {
         return __DIR__ . '/../resources/' . self::_cleanPath($path);
@@ -50,6 +52,9 @@ class PDFTools
     {
         $infos = self::infos($pdf);
         $res = ['size' => $infos['infos']['size'], 'max' => [0, 0], 'totalHeight' => 0];
+        if (!isset($infos['infos']['page']) || !count($infos['infos']['page'])) {
+            return $res;
+        }
         foreach ($infos['infos']['page'] as $page) {
             $res['max'][0] = max($res['max'][0], $page['size'][0]);
             $res['max'][1] = max($res['max'][1], $page['size'][1]);
@@ -66,8 +71,7 @@ class PDFTools
         // bookmarks
         // Init arrays
         $res['raw'] = $data;
-        $res['infos'] = [];
-        $res['infos']['size'] = [0, 0];
+        $res['infos'] = ['page' => [], 'pages' => 0, 'size' => [0, 0]];
         $res['bookmarks'] = [];
         $res['numberSections'] = '';
         $bookmark_id = 0;
@@ -230,9 +234,10 @@ class PDFTools
     }
 
 
-    public static function makeBaseSVGFile($in, $out, $page, $attempts = 3)
+    public static function makeBaseSVGFile($in, $out, $page, $attempts = 3, $timeout = 600)
     {
         $pdftocairo = new CommandLine('pdftocairo');
+        $pdftocairo->setTimeout($timeout);
         $pdftocairo->setArg('f', $page);
         $pdftocairo->setArg('l', $page);
         $pdftocairo->setArg('r', 300);
@@ -242,6 +247,11 @@ class PDFTools
         $pdftocairo->setArg(null, $out);
         $pdftocairo->execute();
 
+        if (file_exists($out) && filesize($out) === 0) {
+            file_put_contents($out, static::TIMEOUT_SVG);
+            return;
+        }
+
         if (self::hasPopplerError($pdftocairo->getOutput())) {
             if ($attempts > 0) {
                 static::makeBaseSVGFile($in, $out, $page, $attempts - 1);