11 votes

Ligne de commande batch de Windows 7 pour enregistrer en tant que fichier .pdf un fichier .docx de Word 2013

J'aimerais avoir le moyen le plus rapide d'exporter mon rapport. .docx pour .pdf et le distribuer aux autres dès que j'ai une nouvelle version mise à jour.

Je cherche une approche en ligne de commande qui automatise les étapes suivantes que je dois effectuer manuellement à l'aide de ma souris jusqu'à présent :

File -> Save as -> Browse for location

Quelles sont mes options de commande pour un fichier batch ?

12voto

Oleksiy Kovtun Points 301

Créez une macro globale dans Word 2013 :

' The Word macro for exporting to PDF (the Word window closes after finishing)
Sub ExportToPDFext()
    ChangeFileOpenDirectory ThisDocument.Path
    ActiveDocument.ExportAsFixedFormat _
        OutputFileName:=Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".")) + "pdf", _
        ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, _
        OptimizeFor:=wdExportOptimizeForPrint, _
        Range:=wdExportAllDocument, _
        From:=1, _
        To:=1, _
        Item:=wdExportDocumentContent, _
        IncludeDocProps:=True, _
        KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, _
        DocStructureTags:=True, _
        BitmapMissingFonts:=True, _
        UseISO19005_1:=False
    Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub

Après cela, vous pouvez convertir un document Word en PDF en ligne de commande :

"C:\Program Files\Microsoft Office\Office15\WINWORD.EXE" /mExportToPDFext /q "your_document_path.docx"

La fenêtre de Word ne s'affichera même pas, car elle est configurée pour se fermer à la fin de l'exécution de la macro, et le paramètre /q désactive la fenêtre d'accueil lors du chargement de Word.

Voici les instructions détaillées alternatives sur GitHub . De plus, l'option du menu contextuel permet la conversion par lots, même sans ligne de commande. Il peut être ajouté à la base de registre. Pour DOC et DOCX :

[HKEY_CLASSES_ROOT\Word.Document.8\shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.8\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office15\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

[HKEY_CLASSES_ROOT\Word.Document.12\shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.12\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\Office15\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

3voto

Al Johri Points 456

Pour un outil simple de ligne de commande pour la conversion par lots, vous pouvez utiliser, docx2pdf : https://github.com/AlJohri/docx2pdf/

Installez :

pip install docx2pdf

Cours :

docx2pdf myFolderOfWordDocs

Clause de non-responsabilité : Je suis l'auteur de cet outil.

2voto

sandimschuh Points 21

Voici la solution de Oleksiy Kovtun adopté à l'actuel Office 16 (Office 360).

Dans la macro Word, j'ai dû modifier ThisDocument.Path a ActiveDocument.Path .

' The Word macro for exporting to PDF (the Word window closes after finishing)
Sub ExportToPDFext()
    ChangeFileOpenDirectory ActiveDocument.Path
    ActiveDocument.ExportAsFixedFormat _
        OutputFileName:=Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".")) + "pdf", _
        ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, _
        OptimizeFor:=wdExportOptimizeForPrint, _
        Range:=wdExportAllDocument, _
        From:=1, _
        To:=1, _
        Item:=wdExportDocumentContent, _
        IncludeDocProps:=True, _
        KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, _
        DocStructureTags:=True, _
        BitmapMissingFonts:=True, _
        UseISO19005_1:=False
    Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub

Pour le registre, l'Office 16 utilise un chemin légèrement différent :

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Word.Document.8\shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.8\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\root\\Office16\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

[HKEY_CLASSES_ROOT\Word.Document.12\shell\SavePDFhere]
@="Save PDF here"

[HKEY_CLASSES_ROOT\Word.Document.12\shell\SavePDFhere\command]
@="\"C:\\Program Files\\Microsoft Office\\root\\Office16\\WINWORD.EXE\" /mExportToPDFext /q \"%1\""

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X