Intégration dans un module Dolibarr
Vous développez un module Dolibarr et vous souhaitez extraire des données d'un fichier PDF en vous appuyant sur le serveur DocWizOn ? ScanConnect factorise le code de connexion pour vous. Suivez ce guide pour l'intégrer dans votre module.

Déclarer la dépendance
Ajoutez ScanConnect dans les dépendances de votre module, dans le fichier core/modules/modVotreModule.class.php :
// List of module class names that must be enabled if this module is enabled
$this->depends = ['...', 'modScanConnect'];
Inclure et instancier ScanConnect
Ajoutez l'inclusion de la classe ScanConnect dans votre code :
dol_include_once('/scanconnect/class/scanConnect.class.php');
Puis instanciez un objet scanConnect avec les paramètres de votre analyse :
$scanConnect = new scanConnect([
'db' => $db,
'srcFileName' => '/var/www/dolibarr/documents/mon-fichier.pdf', // Fichier PDF à analyser
'ymlFileName' => '/var/www/dolibarr/documents/masque.yaml', // Facultatif : masque d'extraction
'profile' => 'raw', // Profil de document
'action' => 'default', // Action à exécuter
'lang' => 'fra', // Langue du document
'pluginName' => 'MonPlugin-1.0' // Nom de votre module
]);
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
db |
Oui | Objet de connexion à la base de données Dolibarr |
srcFileName |
Oui | Chemin absolu vers le fichier PDF à analyser |
ymlFileName |
Non | Chemin vers le fichier YAML décrivant le masque d'extraction de données |
profile |
Oui | Profil de document pris en compte par le serveur DocWizOn |
action |
Oui | Action à exécuter (actuellement seule default est disponible) |
lang |
Oui | Code de la langue du document (ex. fra pour le français) |
pluginName |
Oui | Identifiant de votre module (nom et version) |
Afficher les informations du serveur
Pour afficher l'état du serveur DocWizOn et les informations de votre compte, utilisez la méthode getInfoAboutWebservice() :
<div id="ocr-server-card" style="min-height: 40px; padding: 2em; border: 1px solid #888; background: #f8f8f8;">
<?php print $scanConnect->getInfoAboutWebservice(); ?>
</div>
Cette méthode génère un bloc HTML contenant les informations de connexion :

Lancer l'analyse
Appelez la méthode runAnalyze() pour envoyer le fichier PDF au serveur DocWizOn :
$res = $scanConnect->runAnalyze();
En cas d'erreur, consultez la propriété $scanConnect->error pour obtenir le message d'erreur.
Récupérer le résultat
Une fois l'analyse terminée, récupérez les données extraites avec getResult() :
$result = $scanConnect->getResult();
Exemple complet
Voici un exemple complet d'un script PHP utilisant ScanConnect dans un contexte Dolibarr :
<?php
$res = 0;
if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) {
$res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
}
$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";
}
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");
}
// Début 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'
]);
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;
}
Note : Le bloc d'initialisation en début de script est le pattern standard Dolibarr pour inclure
main.inc.php. Dans votre propre module, ce code est déjà présent dans vos fichiers PHP.