Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
projet_scanconnect:utiliser_scanconnect_dans_votre_plugin_dolibarr [2023/01/30 22:25] – créée supadminprojet_scanconnect:utiliser_scanconnect_dans_votre_plugin_dolibarr [2023/02/01 08:30] (Version actuelle) supadmin
Ligne 3: Ligne 3:
 Vous voulez extraire des données d'un fichier PDF en vous appuyant sur le serveur DocWizOn ? suivez le guide ! Vous voulez extraire des données d'un fichier PDF en vous appuyant sur le serveur DocWizOn ? suivez le guide !
  
-Ajoutez ScanConnect dans les dépendances de votre module+Le code source du plugin ScanConnect est disponible sur la forge logicielle d'informatique-libre: https://inligit.fr/cap-rel/dolibarr/plugin-scanconnect/ 
 + 
 +[{{:projet_scanconnect:pasted:20230131-150950.png?direct=400|Schéma de principe - Factorisation du code de connexion avec le serveur DocWizOn}}] 
 + 
 +## La base 
 + 
 +Ajoutez ScanConnect dans les dépendances de votre module (fichier core/modules/modVotreModule.class.php)
  
 ``` ```
- // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) +// List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) 
-        $this->depends = ['...','modScanInvoices'];+$this->depends = ['...','modScanConnect'];
 ``` ```
  
Ligne 13: Ligne 19:
  
 ``` ```
-dol_include_once('/scanconnect/lib/scanconnect.lib.php');+dol_include_once('/scanconnect/class/scanConnect.class.php');
 ``` ```
  
-Et ensuite +Instanciez un objet scanConnect et utilisez le : 
 + 
 +``` 
 +$scanConnect = new scanConnect([ 
 + 'db'=>$db, 
 + 'srcFileName'=>'/var/www/dolibarr-14/documents/toto.pdf', // fichier pdf à analyser 
 + 'ymlFileName' => '/var/www/dolibarr-14/documents/toto.yaml', // facultatif, voir https://doc.cap-rel.fr/projet_docwizon/format_de_description_du_masque_d_analyse 
 + 'profile' => 'raw', // voir https://doc.cap-rel.fr/projet_docwizon/accueil#profils_de_documents_pris_en_compte 
 + 'action' => 'default', // pour l'instant seule action possible :=) 
 + 'lang' => 'fra', // voir la liste des langues disponible sur https://doc.cap-rel.fr/projet_docwizon/accueil#langues 
 + 'pluginName' => 'SuperTest-1.0' // le nom de votre plugin 
 +]); 
 +``` 
 + 
 +## Informations serveur & compte docwizon 
 + 
 +Par exemple 
 + 
 +``` 
 +    <div id="ocr-server-card" class="clearboth" style="min-height: 40px; padding: 2em; border: 1px solid #888; background: #f8f8f8; text-align: left;"> 
 +        <?php print $scanConnect->getInfoAboutWebservice(); ?> 
 +    </div> 
 +``` 
 + 
 +Affichera la boite d'information du serveur : 
 + 
 +[{{:projet_scanconnect:pasted:20230131-083607.png?direct=400|État du serveur et de votre compte}}] 
 + 
 + 
 +## Lancer l'analyse 
 + 
 +``` 
 +$scanConnect->runAnalyze(); 
 + 
 +``` 
 + 
 +## Récupérer le résultat de l'analyse 
 + 
 +``` 
 +$scanConnect->getResult(); 
 + 
 +``` 
 + 
 +## Exemple pour un plugin dolibarr 
 + 
 +Fichiers du jeu d'essai: 
 +  * document PDF: {{ :projet_scanconnect:marathon.pdf |}} 
 +  * masque d'extraction de données: {{ :projet_scanconnect:marathon.yaml |}} 
 + 
 +``` 
 +<?php 
 +$res = 0; 
 +if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { 
 + $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; 
 +
 +// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME 
 +$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; 
 +while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { 
 + $i--; $j--; 
 +
 +if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { 
 + $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; 
 +
 +if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { 
 + $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; 
 +
 +// Try main.inc.php using relative path 
 +if (!$res && file_exists("../main.inc.php")) { 
 + $res = @include "../main.inc.php"; 
 +
 +if (!$res && file_exists("../../main.inc.php")) { 
 + $res = @include "../../main.inc.php"; 
 +
 +if (!$res && file_exists("../../../main.inc.php")) { 
 + $res = @include "../../../main.inc.php"; 
 +
 +if (!$res) { 
 + die("Include of main fails"); 
 +
 + 
 +// ============================================ debut du code ScanConnect 
 +dol_include_once('/scanconnect/class/scanConnect.class.php'); 
 + 
 +$scanConnect = new scanConnect([ 
 + 'db'=>$db, 
 + 'srcFileName'=>'/var/www/dolibarr/documents/marathon.pdf', 
 + 'ymlFileName' => '/var/www/dolibarr/documents/marathon.yaml', 
 + 'profile' => 'raw', 
 + 'action' => 'default', 
 + 'lang' => 'fra', 
 + 'pluginName' => 'SuperTest-1.0' 
 +]); 
 +// $apiInfoFromServer = $scanConnect->getInfoAboutWebservice(); 
 +print "<p>File = " . $scanConnect->srcFileName . "</p>"; 
 +$res = $scanConnect->runAnalyze(); 
 +print $scanConnect->error; 
 + 
 +if ($res) { 
 + print "<p>retour positif = " . $res . "</p>"; 
 + print "<pre>"; 
 + print json_encode($scanConnect->getResult(), JSON_PRETTY_PRINT); 
 + print "<pre>"; 
 +} else { 
 + print "<p>ERREUR:</p>"; 
 + print $scanConnect->error; 
 +
 +```