Vous souhaitez intégrer notre service en ligne basé sur l'IA 7-PDF Invoice Extractor à votre application web ? Cette page pourrait vous intéresser !

Utilisez notre API pour convertir des factures PDF simples au format PDF ZUGFeRD (PDF/A-3 avec XML). Idéal pour le traitement automatisé des factures dans les systèmes ERP, DMS ou web.

🔑 Request API token now

Automatisation : Une automatisation technique (p. ex. via FastAPI, CLI) est possible, mais requiert impérativement un circuit de validation automatisé : validation de schéma XSD/EN 16931 et contrôles de plausibilité métier par rapport à vos données (p. ex. contrôle des totaux, taux de TVA, identifiants acheteur/vendeur, Leitweg-ID, IBAN/BIC, numéros de commande/référence). Sans chaîne de contrôle fiable, l’envoi automatique « à l’aveugle » à des tiers est déconseillé. Le service d’IA peut commettre des erreurs ; nous déclinons toute responsabilité pour le XML ZUGFeRD généré.

📦 Échantillon: PHP-Integration (CLI)

    <?php
        $token = 'YOUR_TOKEN'; // API-Token
        $apiUrl = 'https://konverter.zugferd-rechnungen.de/api/pdf2zugferd.php';
    
        $inputFile = 'invoice.pdf';
        $outputFile = 'ZUGFeRD_invoice.pdf';
    
        // Check input file
        if (!file_exists($inputFile)) {
                exit("❌ Error: The input file '{$inputFile}' was not found.\n");
        }
    
        $cfile = new CURLFile(realpath($inputFile), 'application/pdf', basename($inputFile));
        $postFields = [
            'file' => $cfile,
            'token' => $token,
            'dscheck' => 'yes', //Agree to transfer and data protection
            'desiredFilename' => $outputFile
        ];
    
        $ch = curl_init($apiUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    
        $response = curl_exec($ch);
        $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
        $body = substr($response, $headerSize);
        $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
        curl_close($ch);
    
        if (str_contains($contentType, 'application/pdf')) {
            file_put_contents($outputFile, $body);
            echo "✅ Stored: {$outputFile}\n";
        } else {
            echo "❌ Error:\n" . $body;
        }
    ?>

🌐 Échantillon: JavaScript (formulaire HTML avec Fetch)

    <form id="uploadForm">
            <input type="file" name="file" accept="application/pdf" required>
            <input type="text" name="desiredFilename" value="ZUGFeRD_invoice.pdf">
            <button type="submit">Upload</button>
        </form>
    
        <script>
        document.getElementById('uploadForm').addEventListener('submit', async function(e) {
            e.preventDefault();
            const form = e.target;
            const fileInput = form.file;
            const file = fileInput.files[0];
    
            if (!file) {
                alert('❌ Please select a pdf invoice.');
                return;
            }
    
            if (file.type !== 'application/pdf') {
                alert('❌ Only pdf files are allowed.');
                return;
            }
    
            const filename = form.desiredFilename.value || 'ZUGFeRD_invoice.pdf';
    
            const formData = new FormData();
            formData.append('file', file);
            formData.append('token', 'YOUR TOKEN');
            formData.append('dscheck', 'yes'); //Agree to transfer and data protection
            formData.append('desiredFilename', filename);
    
            try {
                const res = await fetch('https://konverter.zugferd-rechnungen.de/api/pdf2zugferd.php', {
                    method: 'POST',
                    body: formData
                });
    
                if (!res.ok || !res.headers.get('Content-Type')?.includes('application/pdf')) {
                    const text = await res.text();
                    throw new Error(text);
                }
    
                const blob = await res.blob();
                const url = URL.createObjectURL(blob);
    
                const a = document.createElement('a');
                a.href = url;
                a.download = filename;
                a.click();
                URL.revokeObjectURL(url);
            } catch (err) {
                alert('❌ Error during upload or conversion:\n' + err.message);
            }
        });
    </script>

Remarque importante : Un jeton dans le code source JS représente un risque de sécurité, notamment avec du JavaScript accessible publiquement dans le navigateur. Tout utilisateur peut visualiser le jeton. Il est donc conseillé de le sécuriser côté serveur, par exemple avec PHP.

Top