Ogni giorno vi trovate a dover convertire decine di documenti Office in file PDF per poterli poi archiviare, o spedire via mail ai clienti, va bene che ci sono le stampanti virtuali che creano i PDF, però quanto tempo perdete ad aprire il singolo file di Office, inviarlo in stampa e convertirlo in PDF, oppure salvarlo in formato PDF se avete delle versioni recenti della suite di programmi per l'ufficio. Utilizzando un paio di script PowerShell è possibile convertire, in una sola volta, gruppi di file Office in formato PDF attendendo solo qualche momento a seconda del numero di file presenti.

Dalle prove fatte la conversione è sempre stata buona, l'impaginazione mantenuta e non ho notato modifiche inattese ai caratteri utilizzati nel documento originale.
Chiaramente non posso garantire che questo avvenga con tutti i tipi di documenti Office, magari pieni di tabelle, grafici o impaginazioni strane. Non vi resta che provare i due script e valutare i risultati.
Dovete solo creare una cartella temporanea dove copiare i file da convertire (non fatelo mai con i file originali per non rischiare di perderli), modificare, con notepad, la prima riga dello script e inserire il percorso della vostra cartella. I PDF saranno salvati nella stessa cartella che contiene i file di Office.
In allegato all'articolo trovate i due file PS1 degli script già pronti all'uso.
Questo è lo script per la conversione dei file DOC e DOCX:
- $documents_path = 'D:\Temp'
- $word_app = New-Object -ComObject Word.Application
- # This filter will find .doc as well as .docx documents
- Get-ChildItem -Path $documents_path -Filter *.doc? | ForEach-Object {
- $document = $word_app.Documents.Open($_.FullName)
- $pdf_filename = "$($_.DirectoryName)\$($_.BaseName).pdf"
- $document.SaveAs([ref] $pdf_filename, [ref] 17)
- $document.Close()
- }
- $word_app.Quit()
Mentre con questo script convertite i file XLS e XLSX:
- $path = "D:\temp"
- $xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
- $excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse
- $objExcel = New-Object -ComObject excel.application
- $objExcel.visible = $false
- foreach($wb in $excelFiles)
- {
- $filepath = Join-Path -Path $path -ChildPath ($wb.BaseName + ".pdf")
- $workbook = $objExcel.workbooks.open($wb.fullname, 3)
- $workbook.Saved = $true
- "saving $filepath"
- $workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
- $objExcel.Workbooks.close()
- }
- $objExcel.Quit()
Il file PDF è poi apribile con un qualsiasi programma compatibile con questo formato e ha, almeno nelle prove che ho fatto, mantenuto sempre l'impaginazione originale.

 
                             
                             
                 
                 
                             
                             
                             
                            ![[guida] Come aggiornare da Proxmox 8 a Proxmox 9 senza perdere dati (metodo sicuro e ufficiale) (aggiornato: ottobre 2025)](https://turbolab.it/immagini/reg/6/come-aggiornare-proxmox-9-spotlight-26731.avif)