본문 바로가기
Azure & Windows/PowerShell

Converting PPT to PDF using PowerShell

by 강철 벼룩 2015. 7. 29.

PowerShell은 사용할 수록 멋진 도구인것 같습니다.

PowerShell로 할 수 있는 많은 작업이 있지만, 이번에는 파워포인트 파일을 PDF로 변환하는 과정을 기존의 번거로운 방식을 탈피해 한 번에 깔끔하게 할 수 있는 방법을 설명합니다.

 

[적용 환경]

● 정품 Office 2010 이상.

● Windows 7 이상의 클라이언트 운영체제로 PowerShell v3.0 이상

 

먼저 기존의 번거로운 방법으로 PDF 변환은 다음 그림과 같이 각 PPT 파일을 열고 [내보내기] 메뉴를 찾아서 파일의 횟수 만큼 실행하는 과정이 있습니다.

 

 

<그림 1> 번거로운 방법

 

이와 같은 번거로움을 PowerShell로 해결하려면, 사전 지식으로 Office Interop Object에 대한 학습이 필요합니다. 하지만 여기서는  PowerShell에서 Office 어셈블리를 가져다 프로그래밍 하듯이 사용할 수 있다는 정도만 언급합니다. PowerShell에 대해 더 궁금 하다면, 필자가 오랫동안 연재해온 <마이크로소프트웨어>의 "관리 효율성 증대를 위한 도구 PowerShell"과 Technet과 MSDN을 찾아보시기 바랍니다. 

 

다음은 PPT 파일을 PDF로 변환할 수 있도록 작성한 PowerShell 스크립트 입니다. 주석을 참고하여 대략의 흐름만 파악해보세요.

바로 사용할 수 있도록 스크립트 파일을 첨부했으니, 다운로드 받아 이용하시기 바랍니다.

 

☞ 다운로드:  PptxToPdf.ps1

 

# 파워포인트를 시작합니다.
$pptx = new-object -com powerpoint.application
#$pptx.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue

 

# 파워포인트 파일이 있는 위치(폴더)를 설정합니다.
$filePath=Read-Host -Prompt '파워포인트 파일이 있는 폴더 경로를 입력하세요.(예, "C:\Test\")'
$filePath=$filePath -replace '"',''

 

# 저정한 위치(폴더)의 파워포인트 파일을 하나씩 처리 합니다.
Foreach($inFile in $(ls $filePath -Filter "*.pptx")){
 Set-ItemProperty ($filePath + $inFile) -name IsReadOnly -value $false
 $filename = Split-Path $inFile -leaf
 $file = $filename.Split(".")[0]
 $outFile = $filePath + $file + ".pdf"

 

 # 파워포인트 파일을 오픈합니다.
 $slides = $pptx.Presentations.Open($filePath + $inFile)

 

 # PDF로 저장합니다.
 $inMsg= $filePath + $file + ".pdf 생성중"
 Write-Host -Message $inMsg
 $saveOption= [Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType]::ppSaveAsPDF
 $slides.SaveAs($outFile,$saveOption)

 

 # 오픈된 파워포인트 파일을 종료합니다.
 $slides.Close();
 $outMsg=$filePath + $file + ".pdf 생성 완료!"
 Write-Host $outMsg

}

 

 

<그림 2> PowerShell에서 PPT를 PDF로 변환하는 모습