Próbuję użyć PowerShell zrobić konwersję Word Docx to PDF - za pomocą skryptu znajdującego się na tej stronie: http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/24/weekend-scripter-convert-word-documents-to-pdf-files-with-powershell.aspxPodstawowe PowerShell - konwertowanie Słowo Docx to PDF
# Acquire a list of DOCX files in a folder
$Files=GET-CHILDITEM "C:\docx2pdf\*.DOCX"
$Word=NEW-OBJECT –COMOBJECT WORD.APPLICATION
Foreach ($File in $Files) {
# open a Word document, filename from the directory
$Doc=$Word.Documents.Open($File.fullname)
# Swap out DOCX with PDF in the Filename
$Name=($Doc.Fullname).replace("docx","pdf")
# Save this File as a PDF in Word 2010/2013
$Doc.saveas([ref] $Name, [ref] 17)
$Doc.close()
}
I dalej pojawia się ten błąd i nie można ustalić, dlaczego:
PS C:\docx2pdf> .\docx2pdf.ps1
Exception calling "SaveAs" with "16" argument(s): "Command failed"
At C:\docx2pdf\docx2pdf.ps1:13 char:13
+ $Doc.saveas <<<< ([ref] $Name, [ref] 17)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Jakieś pomysły?
Ponadto - w jaki sposób należy go zmienić, aby przekonwertować pliki doc (nie docX), a także użyć plików lokalnych (plików w tej samej lokalizacji, co lokalizacja skryptu)?
Niestety - nigdy zrobić skryptów PowerShell ...
ten pracował - Dzięki - zmienił $ documents_path być dynamiczne oparte na lokalizacji przy użyciu skryptu '$ documents_path = Split-Path -parent $ MyInvocation.MyCommand.Path' – takabanana
Czy stosowany OLEDB w tej konwersji? – culter
Powinieneś również zwolnić obiekt COM: '[System.Runtime.Interopservices.Marshal] :: ReleaseComObject ($ word_app)'. Usunięcie całej zmiennej jest również zalecane przez [The Scripting Guys] (http://technet.microsoft.com/en-us/library/ff730962.aspx): 'Remove-Variable word_app' – ComFreek