De base de Powershell, batch convertir Word Docx en PDF
Je suis en train d'utiliser PowerShell pour faire une conversion par lot de Word Docx en PDF à l'aide d'un script trouvé sur ce site:
http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/24/weekend-scripter-convert-word-documents-to-pdf-files-with-powershell.aspx
# 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()
}
Et j'obtiens toujours cette erreur et ne peut pas comprendre pourquoi:
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
Des idées?
Aussi - comment aurais-je besoin de le changer pour aussi convertir doc (pas docX) des fichiers, ainsi que l'utilisation du local (fichiers au même endroit que l'emplacement du script)?
Désolé - n'a jamais fait de scripts PowerShell...
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne pour doc ainsi que les fichiers docx.
$documents_path = Split-Path -parent $MyInvocation.MyCommand.Path
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word_app)
. Retrait de la totalité de la variable est également suggéré par le Les scripteurs:Remove-Variable word_app
Cela fonctionne pour moi (Word 2007):
Les réponses ci-dessus ont tous été courte pour moi, alors que je faisais un travail par lots de conversion de près de 70 000 documents word de cette façon. Comme il s'avère, ce faisant à plusieurs reprises conduit finalement à la Parole de s'écraser, sans doute en raison de problèmes de mémoire (l'erreur était certains COMException que je ne sais pas comment analyser). Donc, mon hack pour obtenir de procéder était de tuer et redémarrez word tous les 100 docs (arbitrairement choisie nombre).
En outre, quand il plante parfois, il n'y aurait résultant mal formé des fichiers pdf, qui, chacune, ont été généralement de 1 à 2 ko. Donc, en sautant déjà au format pdf généré, j'ai assurez-vous qu'ils sont à moins de 3 ko à la taille. Si vous ne voulez pas sauter déjà généré des fichiers Pdf, vous pouvez supprimer que si l'instruction.
Excusez-moi si mon code n'a pas l'air bon, je n'utilisez Windows et que c'était un hack. Donc, voici le code résultant:
Aucune des solutions posté ici a fonctionné pour moi sur Windows 8.1 (btw. Je suis à l'aide d'Office 365). Mon PowerShell en quelque sorte n'aime pas les [ref] arguments (je ne sais pas pourquoi, j'ai utiliser PowerShell très rarement).
C'est la solution qui a fonctionné pour moi: