Конвертирование документов MS Word в PDF при помощи PowerShell
Небольшая функция Export-WordToPDF PowerShell которая позволит конвертировать файл в формате Microsoft в PDF
function Export-WordToPDF { param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)] [Alias("FullName")] $path, $pdfpath = $null) process { if (!$pdfpath) { $pdfpath = [System.IO.Path]::ChangeExtension($path, '.pdf') } $word = New-Object -ComObject Word.Application $word.displayAlerts = $false $word.Visible = $true $doc = $word.Documents.Open($path) #$doc.TrackRevisions = $false $null = $word.ActiveDocument.ExportAsFixedFormat($pdfpath, 17, $false, 1) $word.ActiveDocument.Close() $word.Quit() } } |
Команда для запуска проста:
PS> Dir c:\folder -Filter *.doc | Export-WordToPDF |
Понравилась статья? Оставьте комментарий или подпишитесь на RSS рассылку.
Привет всем, используя наработки с различных ресурсов сделал собственный скрипт под себя. Данный скрипт конвертит множество документах в каталогах, в каждом создает папку «PDF» и перемещает уже готовые документы каталога. Очень помог, у нас находилось около 6к документов в разных под папках. Если будут вопросы, то обращайтесь: svemp02@gmail.com
$path = «D:\testpdf»
$dirsname = (Get-ChildItem $path -Directory -recurse).FullName
$pdf_path = $dirsname
$docscount = Get-ChildItem $path -Filter «*.doc» -recurse
$word = New-Object -ComObject Word.Application
$word.Visible = $false
$Core = foreach ($PDF1 in $pdf_path)
{
$docs = Get-ChildItem $PDF1 -Filter «*.doc»
foreach ($File in $docs){
$fullname = $PDF1 + «\PDF»
if (!(Test-Path $fullname))
{
Write-Verbose «Создаём каталог $fullname`n» -Verbose
New-Item -ItemType directory -Path $fullname | Out-Null
}
#Convert
$count = $docscount.Count
$name = $file.Name
++$number
Write-Verbose «$name `t`t (файл $number из $count)» -Verbose
$doc = $word.Documents.Open($file.FullName)
$pdf_file = $fullname + «\» + $doc.Name
$pdf_file = [System.IO.Path]::ChangeExtension($pdf_file, ‘.pdf’)
$doc.ExportAsFixedFormat($pdf_file,17, $false, 1)
$doc.Close()
}
}
$word.Quit()