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.

Come convertire documenti Office PDF PowerShell

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.

Come convertire documenti Office PDF PowerShell