diff --git a/src/app/document/controllers/CertificateSignatureController.php b/src/app/document/controllers/CertificateSignatureController.php index f0acaa692d2db5b3ffee68b2b6e3fbcf859b634c..d1965716abe0955a11b242dcf328a339c36b2ce6 100755 --- a/src/app/document/controllers/CertificateSignatureController.php +++ b/src/app/document/controllers/CertificateSignatureController.php @@ -102,18 +102,34 @@ class CertificateSignatureController $pageCount = $pages->count(); for ($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++) { - $page = $pages->getPage($pageNumber); - - $format = \SetaPDF_Core_PageFormats::getFormat($page->getWidthAndHeight(), \SetaPDF_Core_PageFormats::ORIENTATION_AUTO); - $signature = $args['body']['signatures'][0]; if ($signature['page'] == $pageNumber) { + $page = $pages->getPage($pageNumber); + $format = \SetaPDF_Core_PageFormats::getFormat($page->getWidthAndHeight(), \SetaPDF_Core_PageFormats::ORIENTATION_AUTO); + $image = base64_decode($signature['encodedImage']); if ($image === false) { return ['errors' => 'base64_decode failed']; } $imageTmpPath = $tmpPath . $GLOBALS['id'] . '_' . rand() . '_writing.png'; + + if ($signature['positionX'] == 0 && $signature['positionY'] == 0) { + $signWidth = $format['width']; + $signPosX = 0; + $signPosY = 0; + } else { + $signWidth = ($signature['width'] * $format['width']) / 100; + $signPosX = ($signature['positionX'] * $format['width']) / 100; + $signPosY = ($signature['positionY'] * $format['height']) / 100; + } + $signatureInfo = [ + 'page' => $signature['page'], + 'positionX' => $signPosX, + 'positionY' => $signPosY, + 'filePath' => $imageTmpPath, + 'signWidth' => $signWidth + ]; if ($signature['type'] == 'SVG') { $Imagick = new \Imagick(); $Imagick->readImageBlob($image); @@ -123,23 +139,8 @@ class CertificateSignatureController $Imagick->destroy(); } else { file_put_contents($imageTmpPath, $image); - if ($signature['positionX'] == 0 && $signature['positionY'] == 0) { - $signWidth = $format['width']; - $signPosX = 0; - $signPosY = 0; - } else { - $signWidth = ($signature['width'] * $format['width']) / 100; - $signPosX = ($signature['positionX'] * $format['width']) / 100; - $signPosY = ($signature['positionY'] * $format['height']) / 100; - } - $signatureInfo = [ - 'page' => $signature['page'], - 'positionX' => $signPosX, - 'positionY' => $signPosY, - 'filePath' => $imageTmpPath, - 'signWidth' => $signWidth - ]; } + $signatureInfo['type'] = $signature['type']; } } } @@ -172,11 +173,11 @@ class CertificateSignatureController ); $loadedXml = CoreConfigModel::getConfig(); - if ($loadedXml->textWithDigitalSignature == 'true') { + if ($loadedXml->textWithDigitalSignature == 'true' && $signatureInfo['type'] != 'SVG') { $textBlock = new \SetaPDF_Core_Text_Block($font, 6); $textBlock->setWidth($signatureFieldWith); $textBlock->setLineHeight(14); - $textBlock->setPadding(2); + $textBlock->setPaddingBottom(-5); $textBlock->setText("Signé électroniquement par : " . $user['firstname'] . ' ' . $user['lastname'] . "\nLe " . date('c')); $textBlock->draw($canvas, 0, 30); } @@ -261,18 +262,20 @@ class CertificateSignatureController 'fieldName' => $args['signatureFieldName'], 'extraCertificate' => $args['certificate'] ]); - DigitalSignatureController::terminate(['config' => $config, 'transactionId' => $document['digital_signature_transaction_id']]); } if ($args['lastStep']) { + if ($args['signatureMode'] == 'rgs_2stars_timestamped') { + DigitalSignatureController::terminate(['config' => $config, 'transactionId' => $document['digital_signature_transaction_id']]); + } $storeInfos = DocserverController::storeResourceOnDocServer([ 'encodedFile' => base64_encode(file_get_contents($signedDocumentPath)), 'format' => 'pdf', 'docserverType' => 'ESIGN' ]); - if (!empty($storeInfos['errors'])) { - return ['errors' => $storeInfos['errors']]; - } + if (!empty($storeInfos['errors'])) { + return ['errors' => $storeInfos['errors']]; + } AdrModel::deleteDocumentAdr([ 'where' => ['main_document_id = ?', 'type = ?'],