Dans ce chapitre de notre manuel, nous allons vous montrer comment créer des factures PDF conformes au ZUGFeRD (France Factur-X) avec notre imprimante PDF.

Comme toujours, l'application principale est notre imprimante PDF, car elle offre la création de fichiers PDF/A-1b comme base pour les documents PDF conformes à ZUGFeRD. Cette spécification PDF est la base pour joindre d'autres fichiers aux documents PDF, dans le cas de ZUGFeRD, il s'agit de fichiers XML.

Imprimante 7-PDF et Mustang-CLI-x.x.x.jar

Le processus d'attachement des factures dites XML (eInvoices) aux fichiers PDF est le suivant : 7-PDF Printer imprime d'abord le document PDF/A-1b nécessaire au format PDF 1.7, et avec Mustang-CLI-x.x.x.jar, une bibliothèque basée sur Java (OpenSource / soumise à la licence Apache) pour générer des données et des fichiers PDF conformes à ZUGFeRD, nous attachons le fichier de facture XML souhaité au PDF. L'archive JAR peut être utilisée comme une application console. C'est précisément cette possibilité que nous allons utiliser. Avec le VBScript Framework of the 7-PDF Printer nous programmons une macro de quelques lignes qui exécute automatiquement Mustang-CLI-x.x.x.jar via la commande console.

Dans le monde réel, les factures sont généralement imprimées depuis un système ERP vers l'imprimante 7-PDF. Nous ferons en sorte que l'imprimante 7-PDF lise les données d'impression de l'ERP afin de pouvoir référencer et joindre automatiquement un fichier de facture XML approprié (eInvoice), qui a été fourni par le système ERP, via l'extrait du numéro de facture qu'il contient. Cette partie de la programmation est également placée dans la macro VBScript. Nous allons maintenant illustrer en détail les étapes nécessaires à la mise en œuvre de cette solution.

La capture d'écran suivante est purement informative et montre les paramètres possibles pour contrôler l'archive JAR Mustang-CLI-x.x.x.jar comme une application console :

Mustang CLI dans l'invite de commande de Windows 11
Mustang CLI dans l'invite de commande de Windows 11.

Tous les paramètres possibles de la console et de plus amples informations sur le projet Mustang et la possibilité de télécharger gratuitement l'archive JAR Mustang-CLI-x.x.x.jar se trouvent sur ce site web.

IMPORTANT: Cependant, une condition préalable pour réussir à joindre des fichiers aux documents PDF est que vous ayez une installation OpenJDK à jour sur votre système. OpenJDK peut être téléchargé et installé gratuitement (licence GPL) à partir de cette page de téléchargement de Microsoft. Dans notre cas documenté ici, nous avons utilisé microsoft-jdk-17.35.1-windows-x64.msi.

Utiliser "Mustang-CLI-x.x.x.jar" avec l'imprimante 7-PDF

Afin de vraiment automatiser l'impression de factures PDF avec notre imprimante PDF 7-PDF Printer, l'application Mustang-CLI-x.x.x.jar doit d'abord être copiée dans le répertoire d'installation de notre imprimante PDF. Cela a déjà été fait dans la capture d'écran suivante.

Mustang-CLI-x.x.x.jar a été copié dans le répertoire d'installation de notre imprimante PDF.
Mustang-CLI-x.x.x.jar a été copié dans le répertoire d'installation de notre imprimante PDF.

Créer automatiquement des PDF ZUGFeRD avec 7-PDF Printer

Si Mustang-CLI-x.x.x.jar est copié dans le répertoire d'installation, il nous faut encore la macro ZUGFeRD.vbs nécessaire à la création entièrement automatique de fichiers PDF conformes à ZUGFeRD avec 7-PDF Printer.

Vous trouverez une archive ZIP avec le nom PlugIn_ZUGFeRD_7PDF_Printer.zip dans le tableau de téléchargement ci-dessous, qui contient cette macro et d'autres fichiers nécessaires pour tester ce chapitre. Comme d'habitude avec notre imprimante PDF, la macro ZUGFeRD.vbs se trouve dans le dossier des macros. Copiez le fichier VBS dans ce dossier.

La macro ZUGFeRD.vbs doit être placée dans le dossier macros de l'imprimante 7-PDF.
La macro ZUGFeRD.vbs doit être placée dans le dossier macros de l'imprimante 7-PDF.

Après avoir imprimé le document PDF/A-1b requis, la macro appelle automatiquement Mustang-CLI-x.x.x.jar et ajoute automatiquement le fichier de facture XML conforme à ZUGFeRD au PDF imprimé.

La ligne vraiment importante est l'avant-dernière ligne de la macro de script VB.
La ligne vraiment importante est l'avant-dernière ligne de la macro de script VB. Ici Mustang-CLI-x.x.x.jar est appelé depuis l'imprimante 7-PDF en Hidden Mode, ainsi que tous les paramètres nécessaires pour joindre la facture XML (eInvoice). Le chemin peut devoir être adapté à la configuration de votre système pour les anciennes versions de Windows et les autres chemins d'installation d'OpenJDK.

Impression de factures simulées

Comme exemple de simulation, nous utilisons l'exemple de calcul suivant (téléchargeable ci-dessous). Pour ce test ou cet exemple, l'impression est faite à partir de Word, normalement une telle impression est faite à partir d'un système ERP ou d'un système de gestion des marchandises vers une imprimante 7-PDF.

Exemple de facture avec le numéro de facture marqué en rouge
Exemple de facture avec le numéro de facture marqué en rouge.
Note: L'exemple de facture est également disponible en téléchargement ci-dessous.

Le numéro de facture est marqué en rouge dans la facture à des fins purement illustratives, car cette partie des données d'impression extrait la macro ZUGFeRD.vbs pour passer le fichier XML ZUGFeRD approprié pour les données d'impression, qui a été précédemment stocké par le système ERP sous C:\einvoices, à Mustang-CLI-x.x.x.jar afin qu'il ajoute le XML au fichier PDF/A-1b généré (finalement celui-ci devient un fichier PDF/A-3U). Il y a donc un fichier XML conforme à la norme ZUGFeRD dans ce répertoire avec le nom 2021-09-1001.xml.

Dans l'archive ZIP mentionnée ci-dessus et portant le nom PlugIn_ZUGFeRD_7PDF_Printer.zip (à télécharger via le tableau de téléchargement ci-dessous), vous trouverez également un répertoire einvoices qui devrait vous permettre d'exécuter vous-même notre exemple présenté ici.


L'ERP a préalablement stocké les données XML ZUGFeRD pour chaque facture dans ce répertoire à titre d'exemple. Le nom du fichier est le même que le numéro de facture des données d'impression et est extrait par la macro ZUGFeRD.vbs et transmis à Mustang-CLI-x.x.x.jar.

Démarrer la simulation

Nous constatons que Mustang-CLI-x.x.x.jar est dans le InstallRoot de l'imprimante 7-PDF installée, ZUGFeRD.vbs est dans le répertoire Macros, et le répertoire einvoices est décompressé directement sous C:\. OpenJDK est installé et le chemin est ajusté à votre configuration système dans ZUGFeRD.vbs si nécessaire. Ensuite, nous imprimons notre exemple de calcul à partir de Word sur l'imprimante 7-PDF pour la simulation.

Imprimer un exemple de facture
Nous imprimons maintenant notre exemple de calcul depuis Word sur l'imprimante 7-PDF pour la simulation.

Le dialogue d'impression de notre imprimante PDF s'affiche, nous appuyons sur le bouton "Enregistrer" après avoir sélectionné l'emplacement du fichier PDF/A-1b à créer.

Le dialogue d'impression de l'imprimante 7-PDF apparaît.
Le dialogue d'impression de l'imprimante 7-PDF apparaît.

Le résultat

Le résultat est une facture PDF/A-3U à laquelle est joint un fichier XML conforme à la norme ZUGFeRD, comme le montre de manière impressionnante Acrobat Reader d'Adobe.

Facture PDF conforme au ZUGFeRD dans Acrobat Reader
Facture PDF conforme au ZUGFeRD dans Acrobat Reader

Seule une instance spéciale de l'imprimante PDF peut imprimer les documents PDF de ZUGFeRD.

7-PDF Printer prend en charge l'installation de plusieurs instances d'imprimantes PDF via le paramètre de configuration /PRINTERNAME=" [REQUIRED PDF PRINTER NAME]". Des réglages PDF différents peuvent alors être effectués pour chaque instance d'imprimante. Cependant, les macros telles que ZUGFeRD.vbs sont placées globalement dans le dossier des macros, et s'appliquent en fait à chaque instance d'imprimante installée. En langage clair, la programmation affecte chaque instance d'imprimante basée sur l'imprimante 7-PDF.

Cependant, vous pouvez interroger la variable PrinterName (ligne 15) dans le code VB Script, et ainsi fournir le code ZUGFeRD.vbs uniquement pour une instance d'imprimante spécifique. Dans l'extrait de code ci-dessous, il s'agit dans ce cas de l'instance d'imprimante PDF par défaut portant le nom familier de "7-PDF Printer". Ici, l'ensemble du code a été simplement mis entre crochets dans une condition IF de VBScript. Le code pour les documents ZUGFeRD n'est donc exécuté que si une impression a été effectuée via l'imprimante 7-PDF.

Ainsi, le code pour les documents ZUGFeRD n'est exécuté que si une impression a été effectuée via l'imprimante 7-PDF.
Les documents ZUGFeRD sont uniquement créés via l'instance d'imprimante 7-PDF Printer.

Faites attention au pilote d'imprimante

7-PDF Printer peut être installé en tant qu'imprimante réseau PDF en plus d'une installation classique en tant qu'application de bureau ou d'une installation d'imprimante PDF locale (standard). Le paramètre d'installation pour cela est /SHARE.

Après l'installation comme imprimante réseau PDF, il peut être nécessaire de changer le pilote d'imprimante sélectionné après l'installation en 7-PDF Printer, comme indiqué dans la capture d'écran ci-dessous, pour créer des documents PDF ZUGFeRD. Pour une meilleure compatibilité, un pilote Postscript du système d'exploitation peut être utilisé. Dans le cas de ZUGFeRD, cependant, nous avons besoin d'un accès direct aux données d'impression, et cela n'est possible que si l'instance d'imprimante réseau PDF (dans la capture d'écran "PDF-EXP-Prt") est exploitée sous le pilote d'imprimante "7-PDF Printer". Vous devez donc vous assurer que l'instance de l'imprimante utilise également le bon pilote d'imprimante.

Le pilote correct doit être utilisé pour ZUGFeRD !
Pour ZUGFeRD, le pilote correct 7-PDF Printer doit être utilisé !

Remarque: à partir de Windows 10, vous devez désactiver temporairement le partage d'imprimante pour la durée du changement de pilote, sinon vous recevrez un message d'erreur du système d'exploitation.

Conclusion

L'exemple de simulation présenté ici extrait les informations d'impression via la macro-programmation ZUGFeRD.vbs fournie. La programmation stockée attend une mise en page qui correspond à l'exemple de fichier de facture de Word.

Pour vos besoins, la macro ZUGFeRD.vbs devra peut-être être adaptée. Avec un peu de VB Script ou de connaissances en programmation sous Visual Basic, la programmation fournie ici peut être adaptée assez rapidement. Si vous n'avez pas d'expérience en programmation, nous pouvons également vous offrir le savoir-faire correspondant. Il suffit de nous contacter via Formulaire de support, nous serons heureux de vous aider et d'essayer de réaliser vos exigences.

Versions supportées de ZUGFeRD et Factur-X 1.0

Mustang-CLI-x.x.x.jar permet de joindre des documents XML déjà conformes à la norme européenne EN 16931, y compris les versions 1.0, 2.0, 2.1 et Factur-X 1.0 (France) de ZUGFeRD. L'abréviation ZUGFeRD correspond à la spécification "Central User Guide of the Forum Electronic Invoice Germany" et constitue un format pour l'échange de factures électroniques.

Top