Si vous avez des dizaines de documents Word, les ouvrir un par un dans LibreOffice et les exporter séparément est long et source d'interruptions fréquentes. Une commande comme celle-ci soffice --convert-to pdfpermet de convertir un lot de documents, mais des problèmes courants peuvent survenir : envoi des PDF dans le mauvais dossier, perte de noms de fichiers contenant des espaces, association de la tâche à une fenêtre déjà ouverte ou production de PDF dont la mise en page diffère de celle de Word. La procédure décrite ci-dessous commence par un fichier de test, se poursuit par l'exécution d'une commande de conversion par lots sécurisée et se termine par la vérification de l'absence ou de la présence de fichiers de sortie incorrects.
Ces exemples utilisent la syntaxe de ligne de commande actuelle de LibreOffice, telle que documentée dans l'aide de LibreOffice 26.8 (consultée le 6 octobre 2026). Ils utilisent writer_pdf_Exportle filtre d'exportation PDF pour les documents Writer. La conversion convient aux fichiers DOCX courants, mais les mises en page complexes nécessitent une vérification, car LibreOffice et Microsoft Word peuvent interpréter différemment certaines polices et mises en page.
Avant de convertir un dossier
Installez LibreOffice sur l'ordinateur qui effectuera la conversion. Sur un serveur, utilisez le gestionnaire de paquets ou l'installateur du système et vérifiez sa sofficedisponibilité dans l'invite de commandes. Sous Windows, l'exécutable se trouve généralement sousC:\Program Files\LibreOffice\program\soffice.exe ; le chemin d'installation peut varier.
Préparez deux dossiers distincts : un pour les fichiers DOCX sources et un pour les PDF résultants. Commencez par un dossier de sortie vierge ou vide. Si vous effectuez la conversion dans un dossier contenant déjà des PDF portant le même nom de base, LibreOffice risque de vous demander l’autorisation d’écraser les fichiers existants ou de ne pas les remplacer, selon le processus et l’environnement. Séparer les fichiers sources et de sortie permet également d’éviter une boucle de conversion accidentelle lors de l’analyse d’un répertoire par des scripts.
Pour les documents utilisant des polices de caractères peu courantes, installez les mêmes polices que celles utilisées par l'auteur original avant la conversion. L'absence de polices peut modifier les sauts de ligne, le nombre de pages, la largeur des tableaux et la pagination, même si le fichier DOCX s'ouvre sans erreur.
1. Testez d'abord un fichier DOCX.
Convertissez un document représentatif avant de traiter un grand nombre de documents. Dans les exemples ci-dessous, remplacez les chemins d'accès par les vôtres :
mkdir -p "/srv/docs/converted"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
--headlessLance LibreOffice sans ouvrir son interface graphique. --convert-toSélectionne le format de sortie et un filtre optionnel, puis --outdirindique le répertoire de destination. Le tableau des filtres de LibreOffice répertorie writer_pdf_Exportles options de sortie PDF depuis Writer. Avant de convertir l'ensemble du document, vérifiez le PDF de test : contrôlez les sauts de page, les en-têtes et pieds de page, les tableaux, les images, les liens hypertextes et les caractères spéciaux.
Si le test ne génère aucun PDF, vérifiez que le chemin d'accès à la source est correct, que le fichier est lisible et que le dossier de sortie est accessible en écriture. Assurez-vous également que LibreOffice est installé sur le même compte que celui qui exécute la commande. Références officielles : Filtres de conversion de fichiers LibreOffice et Paramètres de ligne de commande LibreOffice .
2. Convertir tous les fichiers DOCX en une seule commande Bash
Sous Linux ou macOS, ouvrez Bash dans un terminal et utilisez un modèle de nom de fichier. Assurez soffice-vous que le chemin d'accès est correctPATH ; sous macOS, vous devrez peut-être exécuter le programme inclus dans le paquet LibreOffice. Cet exemple gère directement les fichiers DOCX dans un dossier d'entrée :
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$src"/*.docx
Bash décompose *.docxles arguments de fichier en arguments distincts avant de lancer LibreOffice. Chaque chemin étant transmis comme un argument individuel, les espaces dans les noms de répertoires et de fichiers sont conservés. Le PDF généré conserve la racine du nom de fichier source, qui Annual Report.docxdevient donc `/chemin Annual Report.pdf/vers/le/fichier/source`. La commande traite uniquement les fichiers présents dans ce dossier ; elle n'effectue pas de recherche dans les sous-dossiers.
Utilisez un répertoire de destination vide pour la première exécution. Avant d'exécuter la commande générique, vérifiez que le répertoire d'entrée contient les fichiers souhaités et que vous disposez de suffisamment d'espace disque pour les PDF. Sous Bash, un caractère générique non reconnu peut être interprété littéralement, sauf si vous configurez les options du shell ; si le répertoire risque d'être vide, vérifiez d'abord la présence d'au moins un fichier DOCX ou utilisez la boucle par fichier décrite dans la section suivante.
3. Utilisez une boucle pour les dossiers volumineux ou une gestion explicite des erreurs.
Un interpréteur de commandes peut refuser une liste d'arguments très longue lorsqu'un dossier contient des milliers de documents. Une boucle évite d'envoyer tous les noms de fichiers au système d'exploitation en une seule commande et gère correctement les espaces lorsque les chemins sont entre guillemets.
src="/srv/docs/incoming"
out="/srv/docs/converted"
mkdir -p "$out"
found=false
for file in "$src"/*.docx; do
[ -f "$file" ] || continue
found=true
soffice --headless --convert-to pdf:writer_pdf_Export --outdir "$out" "$file" || {
printf 'Conversion failed: %s\n' "$file" >&2
}
done
[ "$found" = true ] || { echo 'No DOCX files found.' >&2; exit 1; }
La forboucle entre guillemets gère les noms de fichiers contenant des espaces et n'envoie pas la liste complète des fichiers comme un seul argument. Elle effectue une conversion LibreOffice par fichier, ce qui peut prendre plus de temps qu'avec la commande générique unique. Elle analyse uniquement les fichiers situés directement dans le dossier d'entrée. Pour inclure les sous-dossiers, utilisez une recherche récursive et conservez chaque dossier d'entrée dans la structure de sortie ; sinon, deux fichiers portant le même nom de base peuvent générer des noms de PDF identiques.
4. Convertir un dossier dans Windows PowerShell
Dans PowerShell, transmettez chaque chemin complet comme un argument unique. La boucle suivante répertorie les fichiers pour lesquels LibreOffice renvoie un code de sortie différent de zéro :
$soffice = 'C:\Program Files\LibreOffice\program\soffice.exe'
$inputDir = 'C:\Documents\incoming'
$outputDir = 'C:\Documents\converted'
New-Item -ItemType Directory -Force -Path $outputDir | Out-Null
$files = Get-ChildItem -LiteralPath $inputDir -Filter '*.docx' -File
if ($files.Count -eq 0) {
throw "No DOCX files found in $inputDir"
}
$failed = @()
foreach ($file in $files) {
& $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $outputDir $file.FullName
if ($LASTEXITCODE -ne 0) {
$failed += $file.FullName
}
}
if ($failed.Count -gt 0) {
Write-Warning "Review failed conversions: $($failed -join '; ')"
}
Modifiez cette option $sofficesi LibreOffice est installé ailleurs. Get-ChildItemL'exemple PowerShell n'est pas récursif ; n'ajoutez cette -Recurseligne que si vous avez également prévu comment éviter les doublons dans les noms de fichiers de sortie provenant de dossiers imbriqués. Un code de sortie différent de zéro constitue un avertissement utile, mais ne remplace pas la vérification de l'existence et du bon fonctionnement de chaque fichier PDF attendu.
5. Prévenir les conflits de profils et les surprises désagréables
LibreOffice nécessite un accès en écriture à son profil utilisateur. Si une fenêtre LibreOffice interactive est déjà ouverte, une conversion en ligne de commande risque de réutiliser cette instance ou d'attendre un profil verrouillé. Fermez les autres fenêtres LibreOffice avant une tâche ponctuelle. Pour l'automatisation ou les tâches devant s'exécuter séparément, attribuez à la conversion un profil utilisateur dédié grâce à l' -env:UserInstallationoption d'amorçage. LibreOffice documente l'option permettant de sélectionner un profil autre que celui par défaut.
soffice -env:UserInstallation=file:///tmp/lo-bulk-profile \
--headless --convert-to pdf:writer_pdf_Export \
--outdir "/srv/docs/converted" "/srv/docs/incoming/Annual Report.docx"
Utilisez un répertoire de profil accessible en écriture par le compte exécutant la conversion. N'exécutez pas deux processus LibreOffice simultanément sur le même profil ; utilisez un profil différent pour chaque processus. Conservez l'exécution séquentielle de l'automatisation jusqu'à ce que vous ayez testé votre version installée et votre configuration de stockage.
Ne lancez pas de conversion vers un dossier de production sans avoir défini le traitement des PDF existants. Sauvegardez ou déplacez les résultats précédents, ou enregistrez-les dans un nouveau répertoire horodaté. Une exportation par lots ne doit pas remplacer automatiquement un PDF signé, approuvé ou précédemment relu.
6. Résolution des problèmes courants liés aux conversions par lots
- Aucun fichier de sortie : vérifiez le modèle glob ou le filtre PowerShell d’entrée, mettez entre guillemets les chemins contenant des espaces et assurez-vous que le répertoire de sortie existe et est accessible en écriture. Relancez le test sur un seul fichier pour distinguer un problème de chemin d’un problème lié au traitement par lots.
- La commande s'est terminée, mais certains fichiers sont manquants : vérifiez la sortie du terminal et le code de sortie, puis comparez la liste des fichiers sources avec les fichiers PDF créés. Un fichier DOCX endommagé ou protégé par mot de passe peut nécessiter une réparation ou une ouverture manuelle avant la conversion.
- LibreOffice se bloque ou signale qu'un profil est verrouillé : fermez tout processus LibreOffice interactif ou réessayez avec un
-env:UserInstallationprofil dédié. Ne supprimez pas le répertoire d'un profil pendant que LibreOffice l'utilise.
- Les polices et la pagination peuvent différer de celles de Word : installez les polices requises et comparez un PDF représentatif avec l’original. Pour les documents où un rendu Word exact est contractuellement essentiel, vérifiez la mise en page dans le logiciel de traitement de texte ou auprès d’un service de rendu agréé.
- Les fichiers PDF existants restent inchangés : convertissez-les dans un dossier de sortie vide et vérifiez que la commande pointe bien vers ce dossier. Évitez de supposer que la réexécution d'un traitement par lots écrase systématiquement un fichier PDF précédent.
LibreOffice accepte également des options d'exportation PDF après le nom du filtre, telles que les plages de pages ou les paramètres d'accessibilité. Ces options sont utiles lorsque tous les fichiers doivent avoir le même comportement à l'exportation, mais il est conseillé de les tester sur un échantillon avant de les appliquer à un lot. Consultez la documentation officielle des paramètres de ligne de commande d'exportation PDF .
7. Vérifier le lot fini
Ne vous fiez pas uniquement au retour de la commande à l'invite de commande pour juger de la réussite de l'opération. Comparez le nombre de fichiers DOCX sources avec le nombre de fichiers PDF dans le dossier de sortie, puis examinez quelques fichiers PDF provenant de différentes parties du lot. Vérifiez que chacun s'ouvre correctement, comporte le nombre de pages attendu et inclut la dernière page, les tableaux, les images, les en-têtes, les pieds de page et les caractères spéciaux tels que les lettres accentuées ou les symboles.
Sous Linux, vous pouvez compter les fichiers d'entrée et de sortie non récursifs avec :
find "/srv/docs/incoming" -maxdepth 1 -type f -iname '*.docx' | wc -l
find "/srv/docs/converted" -maxdepth 1 -type f -iname '*.pdf' | wc -l
Le comptage des copies est une première vérification utile, mais ne garantit pas la conformité de chaque fichier. En cas de divergence, comparez les noms de fichiers pour identifier les conversions manquantes. Pour un flux de travail important ou réglementé, consignez chaque chemin source, code de retour, chemin de sortie et résultat de validation, et conservez les fichiers sources jusqu'à la vérification des PDF. Le flux de travail en ligne de commande de LibreOffice élimine les exportations manuelles répétitives, tandis qu'une validation séparée détecte les problèmes de mise en page et d'intégrité des fichiers que l'automatisation ne peut pas identifier de manière fiable.