Exécuter LibreOffice en mode sans interface graphique dans Docker pour la conversion de PDF

Oui. Pour convertir un document ponctuellement, créez une petite image Docker avec LibreOffice installé et exécutez soffice --headless-la --convert-to. Montez le répertoire d'entrée en lecture seule et un répertoire de sortie distinct avec accès en écriture afin que le PDF apparaisse sur votre système. Cet exemple utilise une image basée sur Debian et convertit un fichier DOCX en PDF ; LibreOffice n'est pas exposé comme un service réseau.

Éditeur de terminal affichant un Dockerfile basé sur Debian avec LibreOffice Writer et les polices installées
Le Dockerfile installe LibreOffice Writer et un paquet de polices de base, puis utilise soffice comme commande du conteneur.

À quoi sert le mode sans interface graphique, et quand Docker est-il utile ?

Le mode sans interface graphique lance LibreOffice sans son interface graphique. LibreOffice documente ce mode pour une utilisation en ligne de commande et via une API, et ses options en ligne de commande prennent en charge la conversion de fichiers avec un répertoire de sortie. Docker empaquete l'application et ses dépendances afin qu'un script ou un poste de travail puisse exécuter la même image conteneurisée sans installer la suite bureautique sur l'hôte.

Ce modèle convient parfaitement aux traitements par lots locaux, aux tâches d'intégration continue ou à un processus backend qui reçoit un fichier et enregistre le résultat de la conversion. Un simple conteneur sans interface graphique ne constitue pas, en soi, une API de conversion HTTP : il n'écoute sur aucun port et n'accepte aucun chargement web. Si vous avez besoin d'un service persistant, mettez en place une API et une file d'attente de tâches autour du processus de conversion et ajoutez la validation des requêtes, des délais d'expiration, des limites de taille de fichier et l'isolation.

1. Créez les dossiers d'entrée et de sortie.

Sur un système Linux ou macOS utilisant Bash ou un interpréteur de commandes similaire, créez un dossier de projet avec des sous-dossiers. Placez-y le document source inputet laissez le outputdossier vide pour la première exécution.

mkdir -p lo-work/input lo-work/output
cp report.docx lo-work/input/
cd lo-work

Les commandes Docker ci-dessous utilisent les chemins d'accès et la syntaxe shell de type Unix. Sous Windows, adaptez la syntaxe du chemin d'accès hôte pour PowerShell ou l'invite de commandes et assurez-vous que Docker Desktop est autorisé à partager le lecteur contenant ces dossiers.

2. Créez une image avec LibreOffice

Créez un fichier nommé Dockerfileà l'intérieur lo-workavec ce contenu :

FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    libreoffice-writer fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["soffice"]

libreoffice-writerCe module fournit à Writer les filtres de conversion nécessaires aux formats de traitement de texte courants. Ajoutez libreoffice-calc-en d'autres libreoffice-impresssi le conteneur doit convertir des feuilles de calcul ou des présentations. Le module de polices n'est qu'une base ; installez les polices requises par vos documents et pour lesquelles vous disposez des droits d'utilisation, car l'absence de polices peut modifier le retour à la ligne et les sauts de page.

Créez l'image à partir du répertoire contenant le fichier Dockerfile :

docker build -t lo-headless .

Cet exemple utilise les noms de paquets de Debian Bookworm. Les étiquettes de l'image de base et les paquets des dépôts évoluent ; pour une configuration de production, choisissez une image de base maintenue, recompilez-la régulièrement pour bénéficier des mises à jour de sécurité et figez l'image de base par digest si vous avez besoin de configurations reproductibles. Évitez d'installer des paquets provenant d'un dépôt non pertinent uniquement pour suivre un tutoriel.

Terminal affichant la commande `docker build -t lo-headless .` en cours de création de l'image conteneur
Créez l'image locale à partir du Dockerfile avant d'exécuter le conteneur de conversion.

3. Exécuter LibreOffice avec des montages séparés

Créez un conteneur éphémère et spécifiez les options de conversion après le nom de l'image. Le point de montage d'entrée est en lecture seule ; seul le répertoire de sortie est accessible en écriture. L' --useroption `--user` exécute le processus avec vos identifiants utilisateur et groupe sous Linux, tandis que ` HOME=/tmp--group` attribue à LibreOffice un répertoire d'installation accessible en écriture. Ajustez les permissions du dossier si l'utilisateur hôte ne dispose pas des droits d'écriture output.

docker run --rm \
  --user "$(id -u):$(id -g)" \
  --env HOME=/tmp \
  -v "$PWD/input:/input:ro" \
  -v "$PWD/output:/output" \
  lo-headless \
  --headless --nologo \
  -env:UserInstallation=file:///tmp/lo-profile \
  --convert-to pdf:writer_pdf_Export \
  --outdir /output \
  /input/report.docx

--headlessCette commande désactive l'interface graphique, --convert-to pdf:writer_pdf_Exportsélectionne le filtre d'exportation PDF et --outdirenregistre le résultat dans le dossier de sortie monté. Le chemin d'accès unique du profil utilisateur confère à ce processus un répertoire de configuration LibreOffice accessible en écriture ; si vous exécutez plusieurs conversions simultanément dans un même conteneur persistant, utilisez un chemin d'accès différent pour chaque processus.

Utilisez --mountplutôt ` -vdocker-compose` si vous préférez la syntaxe de montage plus explicite de Docker. Les montages de type `bind` sont liés à des chemins sur l'hôte du démon Docker, tandis que les montages en lecture-écriture permettent aux processus conteneurisés de modifier les fichiers de l'hôte. Limitez la taille de vos montages, évitez de monter votre répertoire personnel ou le socket Docker, et n'exécutez pas un processus de conversion de documents avec des privilèges superflus.

Commande terminale exécutant le conteneur lo-headless avec entrée en lecture seule, sortie en écriture, conversion sans interface graphique et profil séparé
La commande d'exécution transmet le fichier source à soffice tout en limitant l'accès de l'hôte aux deux dossiers du projet.

4. Confirmez que le PDF a été créé.

Vérifiez le répertoire de sortie de l'hôte après la fermeture de Docker :

ls -l output/
file output/report.pdf
test -s output/report.pdf

Le fichier PDF doit exister et ne pas être vide. Ouvrez-le dans un lecteur PDF et vérifiez le nombre de pages, les tableaux, les images, les sauts de page et les polices avant de l'utiliser. La réussite de la conversion ne garantit pas que tous les éléments se soient affichés correctement, notamment si le document utilise des polices ou des fonctionnalités non disponibles dans le conteneur. Utilisez un répertoire de sortie propre ou un nouveau nom de fichier pour chaque conversion afin d'éviter toute confusion entre un ancien PDF et la dernière conversion.

Le terminal affiche le fichier report.pdf dans le répertoire de sortie et l'identifie comme un document PDF.
Vérifiez que le fichier de sortie existe et qu'il est reconnu comme un PDF, puis examinez les pages pour détecter d'éventuels changements de mise en page.

Que dois-je vérifier si la conversion échoue ?

  • Aucun fichier de sortie : veuillez confirmer le nom du fichier source et le chemin du conteneur, qui inputa été monté à l’emplacement indiqué /input, et que le outputrépertoire hôte est accessible en écriture par l’utilisateur sélectionné.
  • Erreurs de profil ou de verrouillage : vérifiez que le -env:UserInstallationchemin d’accès est accessible en écriture. Utilisez un répertoire de profil distinct pour chaque instance LibreOffice exécutée simultanément.
  • Mise en page modifiée : installez les polices nécessaires dans l’image et vérifiez le PDF. Le rendu peut différer de celui d’un ordinateur de bureau en raison de la disponibilité des polices, des filtres d’exportation et des différences de version.
  • Erreur de montage Docker : vérifiez que les deux répertoires hôtes existent avant d’utiliser `docker run` -vou ` --mountdocker run`, et vérifiez que le démon peut y accéder.

Pour connaître le comportement exact des options, consultez la documentation de référence des paramètres de ligne de commande de LibreOffice . Les noms des paquets sont disponibles dans la liste des paquets Debian Bookworm pour LibreOffice Writer . La documentation officielle de Docker explique les points de montage de liaison et les instructions relatives aux Dockerfiles .

Laisser un commentaire

Configurez LibreOffice pour qu'il reconnaisse votre environnement d'exécution Java.

Configurez LibreOffice pour qu'il reconnaisse votre environnement d'exécution Java.

Installez un environnement d'exécution Java compatible, activez-le dans LibreOffice et résolvez le problème d'une liste JRE vide sans modifier les paramètres non liés.

Exécuter LibreOffice en mode sans interface graphique dans Docker pour la conversion de PDF

Exécuter LibreOffice en mode sans interface graphique dans Docker pour la conversion de PDF

Créez un petit conteneur LibreOffice, convertissez des documents bureautiques sans interface graphique et vérifiez la sortie PDF tout en limitant l'accès aux fichiers hôtes.

Réduire la taille des fichiers LibreOffice Impress sans flouter les images

Réduire la taille des fichiers LibreOffice Impress sans flouter les images

Réduisez la taille excessive des fichiers de présentation LibreOffice en compressant les photos intégrées, en choisissant des paramètres d'image appropriés et en vérifiant la qualité des diapositives avant de les partager.

Empêcher le recadrage des impressions de format personnalisé dans LibreOffice

Empêcher le recadrage des impressions de format personnalisé dans LibreOffice

Avant d'imprimer un document de format personnalisé, assurez-vous que les dimensions de la page de LibreOffice correspondent à celles de votre imprimante, vérifiez les marges imprimables et corrigez la mise à l'échelle.

Accélérez les macros Calc en lisant et en écrivant des données par lots.

Accélérez les macros Calc en lisant et en écrivant des données par lots.

Remplacez les accès répétés aux cellules par des lectures et écritures groupées de plages, puis évaluez le résultat et protégez les formules dans les grands classeurs Calc.

Organiser un livre LibreOffice avec des documents maîtres liés

Organiser un livre LibreOffice avec des documents maîtres liés

Divisez un long manuscrit en chapitres, assemblez-les dans Writer et veillez à la cohérence des styles, du contenu et des contrôles d'exportation.

Connectez LibreOffice Base à PostgreSQL grâce à l'assistant intégré

Connectez LibreOffice Base à PostgreSQL grâce à l'assistant intégré

Utilisez l'option PostgreSQL directe de Base pour saisir les détails de votre serveur, vous connecter, enregistrer un fichier de connexion ODB et résoudre les erreurs d'accès courantes.

Rendre les polices personnalisées disponibles pour LibreOffice Flatpak

Rendre les polices personnalisées disponibles pour LibreOffice Flatpak

Installez une police dans votre dossier de polices utilisateur Linux, redémarrez LibreOffice Flatpak et vérifiez qu'elle apparaît bien dans Writer sans affaiblir le bac à sable de l'application.

Pour éviter les plantages de LibreOffice sur Sonoma, privilégiez le travail local.

Pour éviter les plantages de LibreOffice sur Sonoma, privilégiez le travail local.

Protégez votre travail et isolez les plantages d'enregistrement sur lecteur réseau dans LibreOffice sur macOS Sonoma grâce à un flux de travail privilégiant le local, des vérifications d'autorisation et des tests ciblés.

Conservez les identifiants CSV intacts dans Calc en les important comme texte.

Conservez les identifiants CSV intacts dans Calc en les important comme texte.

Pour conserver les zéros non significatifs dans Calc, définissez les colonnes ID sur Texte lors de l'importation CSV, vérifiez l'aperçu et contrôlez les données enregistrées.