1
 20

Analysez un fichier

scanfile

POST https://facturalex.com/api/v1/scanfile?login=&password=

loginVotre code d'identification.
passwordVotre mot de passe.
multipart/form-data
fileContenu du PDF en binaire.
$ curl -D - -X POST "https://facturalex.com/api/v1/scanfile?login=abcdef&password=ABCDEF" -F "file=@file.pdf"

scanfile retourne le résultat de l'analyse d'un PDF.

Exemple pour un PDF/A-3b qui est valide et qui contient un texte en clair et un fichier XML factur-x.sml profil minimum qui est syntaxiquement correct :

{"status":"success","data":{"clear_text":true,"xml":"factur-x.xml","xml_profile":"minimum","xml_errors":null,"pdfa_errors":null}}

Exemple pour un PDF qui ne contient pas un fichier XML factur-x.sml et qui n'est pas un PDF/A-3b valide :

{"status":"success","data":{"clear_text":true,"xml":null,"pdfa_errors":["6.2.4.3-2","6.6.2.1-1"]}}

PDF/A-2 and PDF/A-3 validation rules

En cas d'erreur, scanfile retourne le code HTTP/1.1 400 Bad Request, HTTP/1.1 401 Unauthorized, HTTP/1.1 403 Forbidden ou HTTP/1.1 500 Internal Error.

USAGE

Téléchargez le code des fonctions sendpost et file_mime_type de la librairie iZend. Copiez les fichiers dans l'espace de votre application.

NOTE : Reportez-vous à la page Appelez l'API du service pour une description des fonctions sendpost et file_mime_type.

Ajoutez le fichier scanfile.php avec le contenu suivant :

  1. require_once 'sendhttp.php';
  2. require_once 'filemimetype.php';

Charge le code des fonctions sendpost et file_mime_type.

  1. function scanfile($login, $password, $file) {

Définit la fonction scanfile. $login est votre code d'identification. $password est votre mot de passe. $file est le chemin d'accès du fichier PDF à analyser.

  1.     $curl = 'https://facturalex.com/api/v1/scanfile' . '?' . 'login=' . urlencode($login) . '&' . 'password=' . urlencode($password);

Met $curl à l'URL de l'action scanfile avec le code d'identification et le mot de passe du compte de l'utilisateur. $login et $password doivent être échappés.

  1.     $files=array('file' => array('name' => basename($file), 'tmp_name' => $file, 'type' => file_mime_type($file)));

Prépare la liste des fichiers attachés au POST : file - le PDF à analyser avec le nom du fichier, le chemin d'accès au fichier et son type MIME.

  1.     $response=sendpost($curl, false, $files);

Envoie la requête HTTP avec sendpost. Les arguments login et password sont déjà dans $curl.

  1.     if (!$response or $response[0] != 200) {
  2.         return false;
  3.     }

Si $response vaut false, le serveur est inaccessible. Si $response[0] ne contient pas le code de retour HTTP 200 Ok, une erreur d'exécution s'est produite. En cas d'erreur, scanfile retourne false.

  1.     $r=json_decode($response[2], true);

Décode les données retournées en JSON.

  1.     if ($r['status'] != 'success') {
  2.         return false;
  3.     }

Retourne false en cas d'erreur.

  1.     return $r['data'];
  2. }

Retourne le tableau de l'analyse du PDF.

EXEMPLE

En supposant que vous avez sauvé les fichiers sendhttp.php, filemimetype.php et scanfile.php dans le répertoire courant, lancez PHP en mode interactif, chargez la fonction scanfile et appelez-la avec en arguments votre code d'identification et votre mot de passe, le chemin d'accès à un fichier PDF :

$ php -a
php > require_once 'scanfile.php';
php > $r=scanfile('abcdef', 'ABCDEF', 'good.pdf');
php > print_r($r);
Array
(
    [clear_text] => 1
    [xml] => factur-x.xml
    [xml_profile] => minimum
    [xml_errors] => 
    [pdfa_errors] => 
)
php > $r=scanfile('abcdef', 'ABCDEF', 'bad.pdf');
php > print_r($r);
Array
(
    [clear_text] => 1
    [xml] => 
    [pdfa_errors] => Array
        (
            [0] => 6.2.4.3-2
            [1] => 6.6.2.1-1
        )
)
php > quit
VOIR AUSSI

Appelez l'API du service, Vérifiez une facture

Commentaires

Pour ajouter un commentaire, cliquez ici.