Búsqueda de sitios web

PowerShell: convierta documentos de Word a documentos PDF (masivo)


A menudo tengo que convertir documentos de Microsoft Word a PDF. ¿Qué pasa si realmente tienes muchos documentos para convertir, digamos 1000 o más? ¿Abriría cada documento por separado y haría clic en guardar? Mala idea. En esta publicación de blog, le brindaré una función de PowerShell que le permite convertir varios documentos con un solo comando. Este procedimiento se llama automatización ;-). Profundicemos.

El objetivo

Como ya se mencionó, queremos convertir varios documentos de Microsoft Word a PDF. Mi cmdlet ConvertWordTo-PDF hace exactamente eso.

Fresco. Por cierto, también puedes omitir el parámetro de destino. Los archivos PDF luego se guardarán en la carpeta de origen.

Descargar

Haga clic en este enlace para descargar el módulo PowerShell.

El código

function ConvertWordTo-PDF {

<# 
 
.SYNOPSIS 

ConvertTo-PDF converts Microsoft Word documents to PDF files. 
 
.DESCRIPTION 

The cmdlet queries the given source folder including sub-folders to find *.docx and *.doc files, 
converts all found files and saves them as pdf in the Destination folder. After completition, the Destination
folder with the newly created PDF files will be opened with Windows Explorer.
 
.PARAMETER SourceFolder
 
Mandatory. Enter the source folder of your Microsoft Word documents.
 
.PARAMETER DestinationFolder

Optional. Enter the Destination folder to save the created PDF documents. If you omit this parameter, pdf files will
be saved in the Source Folder.

.EXAMPLE 

ConvertWordTo-PDF -SourceFolder C:\Temp -DestinationFolder C:\Temp1
ConvertWordTo-PDF -SourceFolder C:\temp
 
.NOTES 
Author: Patrick Gruenauer | Microsoft PowerShell MVP [2018-2021] 
Web: https://sid-500.com 
 
#>

[CmdletBinding()]

param
(
 
[Parameter (Mandatory=$true,Position=0)]
[String]
$SourceFolder,
 
[Parameter (Position=1)]
[String]
$DestinationFolder = $SourceFolder

)

    $i = 0

    $word = New-Object -ComObject word.application 
    $FormatPDF = 17
    $word.visible = $false 
    $types = '*.docx','*.doc'

    If ((Test-Path $SourceFolder) -eq $false) {
    
    throw "Error. Source Folder $SourceFolder not found." } 

    If ((Test-Path $DestinationFolder) -eq $false) {
    
    throw "Error. Destination Folder $DestinationFolder not found." } 
    
    $files = Get-ChildItem -Path $SourceFolder -Include $Types -Recurse -ErrorAction Stop
    ''
    Write-Warning "Converting Files to PDF ..."
    ''
    
    foreach ($f in $files) {

        $path = $DestinationFolder + '\' + $f.Name.Substring(0,($f.Name.LastIndexOf('.')))
        $doc = $word.documents.open($f.FullName) 
        $doc.saveas($path,$FormatPDF) 
        $doc.close()
        Write-Output "$($f.Name)"
        $i++

    }
    ''
    Write-Output "$i file(s) converted."
    Start-Sleep -Seconds 2 
    Invoke-Item $DestinationFolder
    $word.Quit()
    
    
}





Cómo implementar ConvertWordTo-PDF

Copie el código anterior en PowerShell ISE (ise.exe) o en un editor de su elección y ejecute el código. Luego escribe el comando y diviértete con él.

Si desea que la función esté disponible permanentemente, de modo que esté disponible cada vez que inicie PowerShell, debe crear una carpeta en C:\Program Files\WindowsPowerShell\Modules. Nombra la carpeta ConvertWordTo-PDF. Luego copie el archivo psm1 en esa carpeta.

Créditos

El crédito es para el autor del enlace a continuación que me inspiró y me planteó la idea de crear esa función.

https://www.der-windows-papst.de/2018/05/17/powershell-word-convert-to-pdf-doc-docx-pdf/powershell-convert-word-to-pdf/

Artículos relacionados