Accueil
» Conseils PC
»
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
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.
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.
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.
--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.
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.
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.