Accueil
» Conseils PC
»
Conversion par lots de fichiers DOCX en PDF avec l'interface de ligne de commande de LibreOffice
Conversion par lots de fichiers DOCX en PDF avec l'interface de ligne de commande de LibreOffice
Si vous avez un dossier contenant des fichiers Word, LibreOffice peut les convertir en une seule commande. Dans le dossier contenant les fichiers DOCX, créez un dossier de sortie vide et exécutez la commande libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx. Cette opération utilise le filtre d'exportation PDF de Writer et conserve les fichiers originaux.
Utilisez un nouveau dossier de sortie, vérifiez que LibreOffice est installé et contrôlez les fichiers PDF générés plutôt que de considérer la sortie réussie de la commande comme une preuve que chaque page est correcte. La ligne de commande est un outil pratique de traitement par lots ; elle ne garantit pas une pagination identique à celle de Microsoft Word ni la réparation des documents endommagés.
Exécutez une conversion par lots simple
Sous Linux, ouvrez un terminal dans le répertoire contenant les fichiers. Créez d'abord le répertoire de sortie :
mkdir -p pdf
libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx
--headlessCe script s'exécute sans ouvrir la fenêtre de bureau habituelle. --convert-toIl sélectionne le format PDF comme format de destination, writer_pdf_Exportnomme le filtre d'exportation PDF de LibreOffice Writer et --outdir pdfenregistre les résultats dans le pdfdossier. L'interpréteur de commandes recherche *.docxles fichiers correspondants avant le lancement de LibreOffice. LibreOffice documente cette syntaxe de conversion et le nom du filtre dans sa documentation de référence des paramètres de ligne de commande et sa liste de filtres de conversion de fichiers .
Exemple de sortie du terminal après l'envoi d'un petit lot de fichiers DOCX vers LibreOffice avec le filtre d'exportation PDF de Writer.
Choisissez le bon modèle de lot
La commande avec caractères génériques est optimale lorsque tous les fichiers DOCX se trouvent dans un même dossier. Elle n'effectue pas de recherche dans les sous-dossiers. Sous Linux, la recherche est sensible à la casse par défaut et *.docxpeut donc ignorer les fichiers se terminant par un point .DOCX. Si l'interpréteur de commandes indique que la recherche n'a pas abouti, listez les fichiers et vérifiez leurs extensions avant de modifier la commande.
Pour les documents imbriqués dans des sous-dossiers, une boucle permet de préserver l'arborescence des répertoires et d'éviter les conflits lorsque deux dossiers contiennent un fichier portant le même nom. Définissez la boucle inputsur l'arborescence source et pdfsur une arborescence de destination distincte :
-print0La correspondance read -d ''gère en toute sécurité les espaces et la plupart des caractères spéciaux dans les noms de fichiers. Le profil distinct empêche ce traitement par lots d'entrer en conflit avec une session LibreOffice de bureau utilisant le même profil utilisateur ; consultez la documentation de référence de démarrage de LibreOffice -env:UserInstallation. Utilisez un chemin de profil unique si deux conversions peuvent s'exécuter simultanément. Placez l'arborescence de sortie en dehors de l'arborescence d'entrée afin que la recherche n'inclue pas les résultats précédents.
Exemple d'une boucle de recherche récursive écrivant des fichiers PDF dans un sous-dossier PDF à côté de chaque dossier source, ce qui permet de séparer les fichiers portant le même nom dans des dossiers différents.
Lorsque LibreOffice est déjà ouvert
Une commande peut sembler se terminer sans produire de fichiers ou se connecter à un processus LibreOffice existant. Une instance de bureau en cours d'exécution peut conserver le profil utilisateur par défaut. Fermez LibreOffice et réessayez ; pour les tâches automatisées, l' -env:UserInstallationoption d'isolation de l'exemple récursif constitue une sécurité utile. Attribuez à chaque tâche simultanée son propre répertoire de profil et attendez la fin d'une tâche avant de réutiliser ce répertoire.
Si la commande indique libreoffice: command not foundd'installer LibreOffice via le gestionnaire de paquets de votre système d'exploitation ou en utilisant le chemin complet de l'exécutable, vous pouvez le faire. Sous Windows PowerShell, un script batch non récursif simple peut s'écrire comme suit :
Adaptez la procédure $sofficesi LibreOffice est installé ailleurs. Exécutez la commande depuis le dossier source et définissez un nouveau dossier de sortie. PowerShell effectue Get-ChildItem -Fileses recherches uniquement dans ce dossier, sauf si la récursivité est activée ; les tâches récursives nécessitent une boucle créant un dossier de destination pour chaque chemin source.
Quels sont les éléments qui peuvent influencer le résultat ?
La conversion en PDF préserve la mise en page interprétable par LibreOffice, mais la pagination des documents n'est pas toujours identique entre Word et LibreOffice. L'absence de polices, d'objets incorporés non pris en charge, de suivi des modifications, de champs ou de tableaux complexes peut entraîner des décalages dans les sauts de ligne et le nombre de pages. Pour une typographie homogène, installez les polices requises avant la conversion. Les fichiers protégés ou chiffrés par mot de passe peuvent nécessiter des identifiants pour être ouverts ou traités manuellement, et un fichier DOCX endommagé peut ne pas être converti, même si d'autres fichiers le sont.
N’exécutez pas le traitement par lots de manière répétée dans un dossier contenant des fichiers PDF importants portant le même nom. Utilisez un dossier de destination vierge ou sauvegardez d’abord les fichiers générés. Si un fichier est particulièrement important, ouvrez-le dans LibreOffice Writer et vérifiez-le avant de vous fier au PDF. Si une pagination Microsoft Word exacte est une exigence contractuelle, LibreOffice n’est peut-être pas le logiciel de rendu approprié ; comparez-le avec un exemple représentatif dans l’application qui définit la mise en page requise.
Exemple de commande utilisant un profil utilisateur LibreOffice distinct pour une conversion automatisée.
Vérifiez le résultat avant de le partager.
Commencez par comparer le nombre de fichiers sources avec le nombre de fichiers PDF. Sous Linux, ces commandes comptent les fichiers dans un dossier plat :
find . -maxdepth 1 -type f -iname '*.docx' | wc -l
find pdf -maxdepth 1 -type f -iname '*.pdf' | wc -l
Pour une conversion récursive, comparez plutôt les comptes sur l'ensemble des arbres d'entrée et de sortie. Un compte correspondant est un indicateur utile, mais ne constitue pas une garantie de qualité : un document corrompu ou un doublon écrasé peut nécessiter une vérification. Consultez le journal du terminal pour détecter les erreurs et assurez-vous que chaque nom de fichier attendu figure bien dans le répertoire de destination.
Examinez des PDF représentatifs dans une visionneuse PDF. Vérifiez la première et la dernière page, le nombre de pages, les marges, les tableaux, les en-têtes et pieds de page, les images et les sauts de page importants. Si un pdfinfologiciel est installé, pdfinfo pdf/Report.pdfil fournit des métadonnées telles que le nombre et la taille des pages ; il n’évalue pas la qualité visuelle. Ne reconvertissez qu’après avoir corrigé un problème spécifique, comme l’installation d’une police manquante ou la modification du répertoire de sortie, puis examinez à nouveau les PDF concernés.
Exemple de vue de vérification affichant les métadonnées PDF telles que le nombre de pages et le format du papier.
Le traitement par lots est prêt lorsque tous les fichiers PDF attendus existent, s'ouvrent sans erreur et que les pages importantes conservent leur mise en page d'origine. Pour les archives volumineuses, conservez les fichiers DOCX originaux et les journaux de conversion afin de pouvoir identifier une erreur et relancer le traitement sans écraser les fichiers non pertinents.