Linha de comando em lote do Windows 7 para salvar como arquivo .pdf para arquivo .docx do Word 2013

Linha de comando em lote do Windows 7 para salvar como arquivo .pdf para arquivo .docx do Word 2013

Gostaria de ter a maneira mais rápida de exportar meu relatório.docxarquivo para.pdfe distribuí-lo para outras pessoas sempre que tiver uma versão nova e atualizada.

Estou procurando uma abordagem de linha de comando que automatize as seguintes etapas que preciso executar manualmente usando o mouse até agora:

File -> Save as -> Browse for location

Quais são minhas opções de comando para um arquivo em lote?

Responder1

Crie uma macro global no 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

Depois disso, você pode converter um documento do Word em PDF na linha de comando:

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

A janela do Word nem aparecerá porque está configurada para fechar depois que a macro terminar de funcionar, e o parâmetro /q desativa a janela inicial quando o Word está carregando.

Aqui estão as instruções detalhadas alternativasno GitHub. Além disso, a opção do menu de contexto permite a conversão em lote mesmo sem a linha de comando. Ele pode ser adicionado ao registro. Para DOC e 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\"" 

Responder2

Para uma ferramenta de linha de comando simples para conversão em lote, você pode usar docx2pdf:https://github.com/AlJohri/docx2pdf/

Instalar:

pip install docx2pdf

Correr:

docx2pdf myFolderOfWordDocs

Isenção de responsabilidade: eu sou o autor desta ferramenta.

Responder3

Aqui está a solução deOleksiy Kovtunadotado para o atual Office 16 (Office 360).

Na macro do Word tive que mudar ThisDocument.Pathpara 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

Para o registro, o Office 16 usa caminhos ligeiramente diferentes:

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\""

informação relacionada