Table des matières

Utilisez ScanConnect (et la puissance du serveur DocWizOn) dans votre module Dolibarr

Vous voulez extraire des données d'un fichier PDF en vous appuyant sur le serveur DocWizOn ? suivez le guide !

Le code source du plugin ScanConnect est disponible sur la forge logicielle d'informatique-libre: https://inligit.fr/cap-rel/dolibarr/plugin-scanconnect/

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'...)
$this->depends = ['...','modScanConnect'];

Puis ajoutez scanconnect dans vos include:

dol_include_once('/scanconnect/class/scanConnect.class.php');

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 :

É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:

<?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;
}