Comment créer un publipostage automatisé avec images dans LibreOffice Writer

Vous pouvez créer un publipostage parfaitement fonctionnel dans LibreOffice Writer pour les noms, adresses, dates et autres champs texte, puis vous rendre compte que dès que chaque destinataire a besoin d'une photo, d'une signature, d'une image de produit, d'un code QR ou d'un badge différent, le flux de travail, pourtant simple en apparence, se complique. La raison est importante : les champs de publipostage documentés dans Writer sont des champs de base de données utilisés comme espaces réservés pour le texte. LibreOffice prend également en charge les images incorporées et liées, mais son aide actuelle ne mentionne pas de « champ image de publipostage » natif qui remplacerait automatiquement une image provenant d'une colonne de chemin de fichier pour chaque enregistrement.

Deux options pratiques s'offrent alors à vous. Si chaque document fusionné utilise le même logo ou la même image de fond, utilisez la fonction de publipostage standard de Writer et conservez cette image fixe dans le modèle. Si l'image doit changer pour chaque ligne, la solution la plus simple consiste à conserver les données de texte et d'image dans Calc, à réserver un objet graphique nommé dans le modèle Writer et à automatiser la fusion à l'aide d'une macro LibreOffice Basic. Ce guide privilégie cette seconde approche.

Ces instructions sont conformes à la documentation de LibreOffice 26.2, disponible en 2026. Les menus peuvent légèrement différer dans d'autres versions ou sur macOS. Le guide actuel de LibreOffice Writer indique que les images peuvent être incorporées ou liées, tandis que l'API UNO expose les objets graphiques de Writer XTextGraphicObjectsSupplieret permet l'automatisation de l'insertion d'une image à partir d'une URL externe. Ces éléments rendent possible l'insertion d'images par enregistrement, même si l'Assistant Fusion et publipostage standard ne propose pas de champ image dédié.

Choisissez le flux de travail approprié avant de commencer.

ExigenceMeilleure approcheCompromis principal
Même logo ou photo sur chaque lettreFusion et publipostage avec Standard WriterSimple, mais l'image ne change jamais d'un enregistrement à l'autre
Une image différente pour chaque destinataireModèle Writer + Calc + Automatisation Basic/UNOConfiguration plus complexe, mais contrôle prévisible de l'image
La base de données stocke l'image elle-même plutôt qu'un chemin d'accès.Flux de travail de base de données/formulaire ou code UNO personnaliséPlus adapté aux bases de données gérées, mais plus lourd qu'une fusion basée sur une feuille de calcul.
Des centaines, voire des milliers de documents dans des lots non surveillésMacro ou script UNO externeNécessite des tests, une journalisation et une gestion rigoureuse des chemins d'accès aux fichiers.

Si votre cas d'utilisation se limite à un logo d'entreprise fixe, arrêtez-vous ici et utilisez la méthode standard de LibreOffice pour la création de lettres types . La suite de cet article concerne les images variables.

Étape 1 : Préparer une source de données Calc propre

Créez une feuille Calc avec une ligne d'en-tête et une entrée par ligne. Placez les références d'images dans une colonne dédiée. Une mise en page pratique estCustomerID : , FirstName, LastName, Email, ImagePath, et OutputName.

Feuille de calcul LibreOffice Calc contenant les champs client, les chemins d'accès aux images et les noms de sortie pour une fusion automatisée avec Writer.
Conservez un chemin d'accès à l'image et un nom de fichier de sortie par ligne afin que l'automatisation puisse résoudre chaque enregistrement sans deviner.

Utilisez des chemins absolus lors de la création et du test de la fusion. Ils sont moins portables, mais ils éliminent toute ambiguïté. Par exemple, C:\MailMerge\Imageslice.jpgsous Windows ou /home/user/mailmerge/images/alice.jpgLinux, il est plus facile de diagnostiquer un problème qu'avec un chemin relatif dont le répertoire de base varie selon la façon dont le document a été ouvert.

N’utilisez pas simultanément les formats de chemin Windows et Linux dans un même fichier de production. Les exemples présentés dans l’illustration montrent simplement le type de valeur que contient la colonne. Votre source de données réelle doit utiliser des chemins valides sur la machine qui exécute la fusion.

Une OutputNamecolonne bien conçue permet également d'éviter les conflits de noms de fichiers. Privilégiez un identifiant stable ou un nom nettoyé plutôt qu'une adresse e-mail ou du texte libre. Si la même valeur apparaît deux fois, déterminez à l'avance si la macro doit écraser la valeur existante, ajouter un suffixe ou échouer.

Étape 2 : Vérifier que Writer peut lire les enregistrements

La fonction de publipostage standard de Writer utilise une source de données enregistrée. Vous pouvez utiliser l'Assistant Fusion et publipostage, une source de données d'adresses ou l'explorateur de sources de données. La documentation d'aide de LibreOffice ( Outils > Assistant Fusion et publipostage ) permet également d'insérer des champs de base de données via Insertion > Champ > Autres champs > Base de données . Consultez la documentation officielle sur les champs de base de données .

LibreOffice Writer affichant une source de données avec des lignes de clients et des champs de fusion standard dans une lettre.
Utilisez la vue de source de données de Writer pour vérifier que les colonnes et les enregistrements attendus sont visibles avant d'ajouter l'automatisation des images.

Cette vérification est utile même si la macro finale lit directement la feuille de calcul. Elle permet de détecter rapidement les problèmes courants : feuille incorrecte, noms d’en-tête inattendus, enregistrements vides ou feuille de calcul déplacée après l’enregistrement.

Pour un publipostage classique (texte uniquement), vous pouvez glisser-déposer un en-tête de colonne dans le document ou insérer un champ de publipostage depuis l'onglet Base de données. L'aide officielle de Writer confirme que ces champs sont remplacés par le contenu de la base de données lors de la fusion. En revanche, pour les images variables, ne considérez pas que le simple fait de glisser- ImagePathdéposer le chemin d'accès dans la page le transformera en image. Il restera une donnée tant que le code ne l'aura pas interprétée et mise à jour en un objet graphique.

Étape 3 : Créez le modèle Writer et nommez l’espace réservé à l’image.

Créez la mise en page de la lettre, du certificat, du badge ou du rapport dans Writer. Pour les valeurs de texte, utilisez soit les champs de fusion et publipostage classiques, soit des caractères distinctifs tels que {FirstName}, {LastName}, et {CustomerID}si votre macro les remplace automatiquement.

Insérez ensuite une image d'exemple à l'endroit où l'image variable doit apparaître. Définissez la taille, le retour à la ligne et l'ancrage souhaités avant d'automatiser le processus. LibreOffice documente le dimensionnement, le positionnement, l'ancrage, le retour à la ligne et le comportement des images liées dans le chapitre « Images et graphiques » de Writer 26.2 .

Modèle LibreOffice Writer avec champs de texte fusionnés et un espace réservé graphique sélectionné nommé MergeImage.
Réservez la position finale de l'image dans le modèle et donnez à l'objet graphique un nom stable tel que MergeImage.

Attribuez un nom stable à l'objet graphique, par exemple « Graphic » MergeImage. La boîte de dialogue des propriétés peut varier selon la version ; en cas de doute sur l'objet exposé par Writer, utilisez Outils > Outils de développement . Les outils de développement de LibreOffice permettent d'inspecter les objets graphiques, leurs propriétés, leurs méthodes et leurs interfaces dans le document courant. Ils constituent ainsi un outil de diagnostic plus fiable que de deviner le nom interne d'un objet.

Pour une mise en page harmonieuse, utilisez le même format pour toutes les images sources ou définissez le recadrage souhaité. Writer peut redimensionner une image aux dimensions de l'espace réservé, mais une photo portrait insérée dans un cadre large en forme de bannière aura toujours un aspect incorrect si vous ne normalisez pas les fichiers au préalable.

Étape 4 : Automatiser l’exportation des images et documents variables

L'opération d'automatisation principale est simple : ouvrir le modèle, remplacer les espaces réservés au texte, trouver l'objet graphique nommé, charger le fichier image de la ligne dans cet objet, puis exporter le résultat. La documentation de l'API UNO de LibreOffice getGraphicObjects()explique comment accéder aux graphiques incorporés et liés, ainsi qu'au TextGraphicObjectservice de gestion des propriétés graphiques. Bien que la GraphicURLpropriété soit obsolète pour le stockage général des objets et remplacée par une autre Graphic, l'API actuelle indique explicitement que la définition d'une URL externe charge cette image dans l'objet graphique. Cela facilite l'utilisation d'une macro Basic simple avec des chemins de fichiers locaux.

LibreOffice Basic IDE affichant une macro de fusion et publipostage qui lit un chemin d'image et met à jour un objet graphique Writer.
La couche d'automatisation est ce qui convertit une valeur ImagePath en l'image réelle affichée dans chaque document généré.

L'exemple suivant est volontairement réduit. Modifiez les trois chemins d'accès, le nom de la feuille, les index de colonnes et les noms des espaces réservés pour qu'ils correspondent à vos propres fichiers. Testez-le sur deux enregistrements avant d'exécuter un traitement par lots plus important.

Sub MailMergeWithImages()
    Dim calcDoc As Object, sheet As Object, doc As Object
    Dim graphics As Object, imageObj As Object
    Dim row As Long
    Dim firstName As String, lastName As String
    Dim imagePath As String, outputName As String
    Dim sourceURL As String, templateURL As String, outputDir As String

    sourceURL = ConvertToURL("C:\MailMerge\customers.ods")
    templateURL = ConvertToURL("C:\MailMerge\LetterTemplate.odt")
    outputDir = ConvertToURL("C:\MailMerge\Output")

    calcDoc = StarDesktop.loadComponentFromURL(sourceURL, "_blank", 0, Array())
    sheet = calcDoc.Sheets.getByName("Sheet1")

    row = 1  ' row 0 contains headers
    Do While sheet.getCellByPosition(0, row).String <> ""
        firstName = sheet.getCellByPosition(1, row).String
        lastName = sheet.getCellByPosition(2, row).String
        imagePath = sheet.getCellByPosition(4, row).String
        outputName = sheet.getCellByPosition(5, row).String

        doc = StarDesktop.loadComponentFromURL(templateURL, "_blank", 0, Array())

        ReplaceAll doc, "{FirstName}", firstName
        ReplaceAll doc, "{LastName}", lastName

        graphics = doc.getGraphicObjects()
        If graphics.hasByName("MergeImage") Then
            imageObj = graphics.getByName("MergeImage")
            imageObj.GraphicURL = ConvertToURL(imagePath)
        Else
            MsgBox "Graphic object MergeImage was not found."
            doc.close(True)
            Exit Sub
        End If

        Dim args(1) As New com.sun.star.beans.PropertyValue
        args(0).Name = "FilterName"
        args(0).Value = "writer_pdf_Export"
        args(1).Name = "Overwrite"
        args(1).Value = True

        doc.storeToURL(outputDir & outputName & ".pdf", args())
        doc.close(True)
        row = row + 1
    Loop

    calcDoc.close(True)
End Sub

Sub ReplaceAll(doc As Object, findText As String, replacement As String)
    Dim d As Object
    d = doc.createReplaceDescriptor()
    d.SearchString = findText
    d.ReplaceString = replacement
    doc.replaceAll(d)
End Sub

Cette macro est un modèle, et non un programme universel prêt à l'emploi. Les installations de LibreOffice peuvent avoir des politiques de sécurité des macros, des règles de chemin d'accès au système d'exploitation et des mises en page de modèles différentes. Les concepts d'API importants et vérifiés sont que Writer expose sa collection d'objets graphiques et que LibreOffice peut définir une image à partir d'une URL externe. Pour les déploiements plus importants, il est recommandé de charger l'image via l' GraphicAPI moderne plutôt que de se fier au comportement de compatibilité GraphicURL. Les références officielles sont XTextGraphicObjectsSupplier et TextGraphicObject .

Étape 5 : Effectuez un test sur un petit lot et vérifiez le résultat.

Avant de traiter l'intégralité de la source de données, effectuez un traitement sur deux ou trois lignes délibérément différentes : une image JPG, une image PNG et, idéalement, une image avec un format différent. Vérifiez les points suivants avant d'effectuer un agrandissement :

  • Le nom du destinataire dans le document correspond à l'image de la même ligne du tableau.
  • Aucun chemin d'accès à l'image n'est affiché littéralement dans le document final.
  • Le nom du fichier de sortie correspond à l'enregistrement prévu et n'écrase pas un autre fichier destiné à un autre destinataire.
  • L'image s'adapte à la zone réservée sans repousser le texte sur une nouvelle page ni recouvrir un autre objet.
  • Le fichier PDF ou ODT généré s'ouvre indépendamment après la fermeture de LibreOffice et de Calc.

Cette dernière vérification est importante car les images liées et les images incorporées se comportent différemment. Le guide actuel de Writer explique qu'une image liée reste une référence de fichier distincte, tandis qu'une image incorporée fait partie intégrante du document. Si vous transférez des fichiers ODT vers un autre ordinateur, vérifiez que le résultat ne dépend pas d'un chemin d'accès local existant uniquement sur l'ordinateur ayant effectué la fusion.

Pannes courantes et solution la plus rapide

Le résultat affiche le chemin du fichier au lieu de l'image.

Vous avez inséré ImagePathun champ de fusion classique. Le résultat attendu est du texte. Conservez le chemin d'accès dans la source de données, mais laissez la macro le charger dans l'objet graphique nommé.

Chaque disque reçoit la même image

L'image du modèle n'a jamais été modifiée entre les enregistrements, ou votre boucle lit une cellule fixe. Enregistrez le numéro de ligne ImagePathlors d'un test sur deux enregistrements. Si le chemin change mais pas l'image, examinez le nom de l'objet graphique avec les outils de développement.

La macro indique que MergeImage n'existe pas.

L'élément graphique a été renommé, remplacé ou n'est pas accessible sous le nom attendu. Sélectionnez l'image et examinez-la via Outils > Outils de développement . L'API UNO expose les objets graphiques par leur nom ; la macro et le modèle doivent donc correspondre exactement.

Les images disparaissent sur un autre ordinateur

Vous avez probablement enregistré un document qui fait encore référence à des fichiers externes. Si la portabilité est importante, assurez-vous que le document généré intègre l'image ou exportez-le au format PDF après le chargement de l'image. Le guide des images de LibreOffice explique la différence entre les images liées et les images incorporées, et comment rompre les liens pour incorporer des fichiers.

La fusion de courrier HTML entraîne la perte d'images

Il s'agit d'une limitation connue qu'il convient de vérifier avant de choisir le mode d'envoi par courriel. L'aide de LibreOffice indique que lorsqu'une lettre type est au format HTML, les images intégrées ou liées ne sont pas envoyées avec le courriel. Si l'image est indispensable, utilisez une pièce jointe PDF ou testez un autre mode d'envoi plutôt que de supposer que le publipostage HTML la conservera. Voir Création d'une lettre type .

Quand utiliser plutôt le service MailMerge UNO de LibreOffice

Si vos champs de texte utilisent déjà la fonction de publipostage native de Writer et que vous avez besoin d'un contrôle programmatique sur le résultat, LibreOffice propose également un MailMergeservice. Ses propriétés documentées incluentDataSourceName : ` <img>` Command, ` <img>`, ` DocumentURL<img> OutputURL`, FileNameFromColumn`<img>`, `<img>` et ` SaveAsSingleFile<img>`. Cette API est utile pour automatiser le publipostage standard par programmation. Cependant, elle ne documente pas, de manière autonome, le champ de chemin d'accès aux fichiers image par enregistrement ; vous devrez donc peut-être combiner l'exécution du publipostage avec la gestion des objets graphiques. Consultez la documentation officielle du service MailMerge .

Liste de vérification finale

  • Utilisez la fonction de publipostage standard de Writer lorsque l'image est fixe pour chaque destinataire.
  • Utilisez une seule ImagePathcolonne vierge lorsque l'image varie selon l'enregistrement.
  • Nommez l'élément graphique de remplacement « Writer » et veillez à ce que ses dimensions restent stables.
  • Résolvez le chemin d'accès à l'image automatiquement ; ne vous attendez pas à ce qu'un champ de fusion de texte se transforme automatiquement en image.
  • Testez deux ou trois enregistrements avant de lancer un traitement par lots complet.
  • Ouvrez les fichiers exportés après avoir fermé les documents sources pour vérifier que le résultat est autonome.

Pour la plupart des petits et moyens travaux, une feuille de calcul Calc, un modèle Writer et une courte macro Basic offrent le meilleur compromis entre transparence et contrôle. La configuration est plus poussée qu'avec un publipostage classique, mais vous pouvez identifier précisément la ligne correspondant à chaque image, choisir le nom du fichier de sortie et valider le résultat avant d'envoyer des centaines de fichiers personnalisés.

Laisser un commentaire

Comment connecter les éditeurs ONLYOFFICE Desktop à un serveur ownCloud

Comment connecter les éditeurs ONLYOFFICE Desktop à un serveur ownCloud

Connectez les éditeurs de bureau ONLYOFFICE à votre serveur ownCloud, connectez-vous, ouvrez des fichiers cloud, gérez la connexion et résolvez les problèmes de configuration courants.

Comment résoudre le problème de forte utilisation du processeur dans Collabora Online (via loolwsd/coolwsd)

Comment résoudre le problème de forte utilisation du processeur dans Collabora Online (via loolwsd/coolwsd)

Résolvez les problèmes d'utilisation élevée du processeur de Collabora Online en identifiant les processus du kit occupés, en vérifiant les indicateurs et les journaux, en ajustant la concurrence et le nettoyage, et en vérifiant les correctifs en toute sécurité.

Comment personnaliser ONLYOFFICE Docs avec votre logo et vos couleurs

Comment personnaliser ONLYOFFICE Docs avec votre logo et vos couleurs

Découvrez comment personnaliser ONLYOFFICE Docs avec un logo d'en-tête et des couleurs d'interface, y compris les limites de licence, la configuration JSON du thème, les chemins Docker et les tests.

Résolution des problèmes de visibilité du texte en mode sombre dans LibreOffice Calc

Résolution des problèmes de visibilité du texte en mode sombre dans LibreOffice Calc

Corrigez les textes difficiles à lire dans LibreOffice Calc en vérifiant le thème de l'application, la police et les couleurs de remplissage des cellules, les styles et la mise en forme conditionnelle, puis vérifiez le résultat d'impression.

Résoudre l'erreur « Document verrouillé par un utilisateur inconnu » dans LibreOffice

Résoudre l'erreur « Document verrouillé par un utilisateur inconnu » dans LibreOffice

Débloquez en toute sécurité l'avertissement de verrouillage par utilisateur inconnu de LibreOffice. Vérifiez les sessions actives, protégez une copie, supprimez uniquement un verrouillage obsolète vérifié et testez le document.

Corriger le texte arabe et hébreu s'écrivant de droite à gauche dans LibreOffice Writer

Corriger le texte arabe et hébreu s'écrivant de droite à gauche dans LibreOffice Writer

Corrigez les problèmes de mise en page du texte arabe ou hébreu avec l'anglais dans LibreOffice Writer. Activez la mise en page complexe, définissez le sens des paragraphes et vérifiez le résultat.

LibreOffice Calc VLOOKUP vs XLOOKUP: A Beginner-Friendly Functions Guide

LibreOffice Calc VLOOKUP vs XLOOKUP: A Beginner-Friendly Functions Guide

Learn VLOOKUP and XLOOKUP in LibreOffice Calc, including exact matches, left lookups, not-found results, reverse search, INDEX/MATCH alternatives, and common errors.

Comment résoudre l'erreur « Échec de la validation de la preuve WOPI » dans Collabora Online

Comment résoudre l'erreur « Échec de la validation de la preuve WOPI » dans Collabora Online

Résolvez les problèmes de validation des preuves WOPI de Collabora Online en vérifiant les clés de découverte, la rotation des clés, les URL proxy, les horodatages et les listes d'autorisation des hôtes.

Comment activer le suivi des modifications par défaut dans ONLYOFFICE Docs

Comment activer le suivi des modifications par défaut dans ONLYOFFICE Docs

Activez le suivi des modifications pour tous les utilisateurs dans un document ONLYOFFICE, maintenez-le actif après la réouverture et comprenez les limites d'une option par défaut globale.

Comment configurer les délais d'inactivité pour les sessions d'édition Collabora

Comment configurer les délais d'inactivité pour les sessions d'édition Collabora

Comparez les délais d'expiration par vue, hors focus, d'inactivité des documents, de sauvegarde automatique et de proxy de Collabora Online, puis choisissez et vérifiez les paramètres pour votre déploiement.