---
title: "Intégration dans un module Dolibarr"
weight: 20
description: "Guide pour utiliser ScanConnect et le serveur DocWizOn dans votre propre module Dolibarr."
---

# 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.

![Schéma de principe illustrant la factorisation du code de connexion avec le serveur DocWizOn via ScanConnect](screenshots/schema-principe.png)

## Déclarer la dépendance

Ajoutez ScanConnect dans les dépendances de votre module, dans le fichier `core/modules/modVotreModule.class.php` :

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

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

Puis instanciez un objet `scanConnect` avec les paramètres de votre analyse :

```php
$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()` :

```php
<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 :

![Boîte d'information affichant l'état du serveur DocWizOn et les détails du compte](screenshots/etat-serveur-compte.png)

## Lancer l'analyse

Appelez la méthode `runAnalyze()` pour envoyer le fichier PDF au serveur DocWizOn :

```php
$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()` :

```php
$result = $scanConnect->getResult();
```

## Exemple complet

Voici un exemple complet d'un script PHP utilisant ScanConnect dans un contexte Dolibarr :

```php
<?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.
