Skip to content
Snippets Groups Projects
Verified Commit 1d4fe68d authored by Florian Azizian's avatar Florian Azizian
Browse files

FEAT #15565 TIME 2:45 Improve performance for image convertion

parent 6693286a
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ namespace Convert\controllers; ...@@ -17,6 +17,7 @@ namespace Convert\controllers;
use Docserver\controllers\DocserverController; use Docserver\controllers\DocserverController;
use Docserver\models\AdrModel; use Docserver\models\AdrModel;
use Docserver\models\DocserverModel; use Docserver\models\DocserverModel;
use setasign\Fpdi\Tcpdf\Fpdi;
use SrcCore\models\CoreConfigModel; use SrcCore\models\CoreConfigModel;
use SrcCore\models\ValidatorModel; use SrcCore\models\ValidatorModel;
...@@ -61,9 +62,18 @@ class ConvertThumbnailController ...@@ -61,9 +62,18 @@ class ConvertThumbnailController
$filename = pathinfo($pathToDocument, PATHINFO_FILENAME); $filename = pathinfo($pathToDocument, PATHINFO_FILENAME);
$tmpPath = CoreConfigModel::getTmpPath(); $tmpPath = CoreConfigModel::getTmpPath();
$img = new \Imagick(); if (!empty($args['configPath'])) {
$img->pingImage($pathToDocument); $configPath = $args['configPath'];
$pageCount = $img->getNumberImages(); } else {
$configPath = CoreConfigModel::getConfigPath();
}
$overrideFile = "{$configPath}/override/setasign/fpdi_pdf-parser/src/autoload.php";
if (file_exists($overrideFile)) {
require_once($overrideFile);
}
$pdf = new Fpdi('P', 'pt');
$pageCount = $pdf->setSourceFile($pathToDocument);
$i = 0; $i = 0;
while ($i < $pageCount) { while ($i < $pageCount) {
...@@ -137,16 +147,24 @@ class ConvertThumbnailController ...@@ -137,16 +147,24 @@ class ConvertThumbnailController
return ['errors' => 'Document not found on docserver or not readable']; return ['errors' => 'Document not found on docserver or not readable'];
} }
$filename = pathinfo($pathToDocument, PATHINFO_FILENAME); if (!empty($args['configPath'])) {
$tmpPath = CoreConfigModel::getTmpPath(); $configPath = $args['configPath'];
} else {
$configPath = CoreConfigModel::getConfigPath();
}
$img = new \Imagick(); $overrideFile = "{$configPath}/override/setasign/fpdi_pdf-parser/src/autoload.php";
$img->pingImage($pathToDocument); if (file_exists($overrideFile)) {
$pageCount = $img->getNumberImages(); require_once($overrideFile);
}
$pdf = new Fpdi('P', 'pt');
$pageCount = $pdf->setSourceFile($pathToDocument);
if ($pageCount < $args['page']) { if ($pageCount < $args['page']) {
return ['errors' => 'Page does not exist']; return ['errors' => 'Page does not exist'];
} }
$filename = pathinfo($pathToDocument, PATHINFO_FILENAME);
$tmpPath = CoreConfigModel::getTmpPath();
$fileNameOnTmp = rand() . $filename; $fileNameOnTmp = rand() . $filename;
$convertPage = $args['page'] - 1; $convertPage = $args['page'] - 1;
...@@ -199,9 +217,9 @@ class ConvertThumbnailController ...@@ -199,9 +217,9 @@ class ConvertThumbnailController
exec($command.' 2>&1', $output, $return); exec($command.' 2>&1', $output, $return);
if ($return !== 0) { if ($return !== 0) {
return "convert -density 500x500 -quality 100 -background white -alpha remove"; return "convert -density 200x200 -quality 100 ";
} else { } else {
return "gm convert -density 500x500 -quality 100 -background white +matte"; return "gm convert -density 200x200 -quality 100";
} }
} }
} }
...@@ -46,9 +46,9 @@ class ThumbnailScript ...@@ -46,9 +46,9 @@ class ThumbnailScript
]); ]);
if (isset($args['page'])) { if (isset($args['page'])) {
$isConverted = ConvertThumbnailController::convertOnePage(['id' => $args['id'], 'type' => $args['type'], 'page' => $args['page']]); $isConverted = ConvertThumbnailController::convertOnePage(['configPath' => $args['configPath'], 'id' => $args['id'], 'type' => $args['type'], 'page' => $args['page']]);
} else { } else {
$isConverted = ConvertThumbnailController::convert(['id' => $args['id'], 'type' => $args['type']]); $isConverted = ConvertThumbnailController::convert(['configPath' => $args['configPath'], 'id' => $args['id'], 'type' => $args['type']]);
} }
if (!empty($isConverted['errors'])) { if (!empty($isConverted['errors'])) {
DocumentModel::update([ DocumentModel::update([
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment