打开word文档并使用PowerShell指定编码

时间:2017-01-05 12:27:29

标签: powershell encoding character-encoding ms-word

我试图告诉PowerShell打开一个文本文件并选择一个特定的编码选项。默认情况下,当手动在Word中打开此文本文件时,它会尝试使用日语编码打开它,因此不会正确显示某些字符。

我尝试过很多不同的东西,但没有任何作用,所以我完全陷入困境。

除其他外,此文本文件需要每天转换为PDF格式。

我目前的脚本如下:

$wdFormatPDF = 17

$word = New-Object -ComObject Word.Application
$word.Visible = $true

$folderpath = "C:\Users\smirabile\Downloads\report-testing-destination\*"
$fileTypes  = "accepted.spl"

Get-ChildItem -Path $folderpath -Include $fileTypes | ForEach-Object {
    $path = ($_.FullName).Substring(0, ($_.FullName).LastIndexOf("."))

    $doc = $word.Documents.Open($_.FullName)

    $Word.Selection.PageSetup.Orientation = 1
    $Word.Selection.PageSetup.LeftMargin  = 20
    $Word.Selection.PageSetup.RightMargin = 20
    $doc.Select()
    $Word.Selection.Font.Size = 9
    $doc.SaveAs([ref]$path, [ref]$wdFormatPDF)

    $doc.Close()
}

$word.Quit()
Stop-Process -Name WINWORD -Force

1 个答案:

答案 0 :(得分:0)

如有疑问,请阅读documentation

  

<强>语法

     
expression.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
    PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument,
    WritePasswordTemplate, Format, Encoding, Visible, OpenConflictDocument,
    OpenAndRepair, DocumentDirection, NoEncodingDialog)
     

[...]
  编码 |可选| 变体 |查看保存的文档时Microsoft Word使用的文档编码(代码页或字符集)。可以是任何有效的MsoEncoding常量。 [...]默认值是系统代码页。

[Type]::Missing用于您希望使用的参数及其默认值。

示例(使用iso-8859-15编码):

$def = [Type]::Missing
$doc = $word.Documents.Open(
         $_.FullName, $def, $def, $def, $def, $def, $def, $def, $def, $def, 28605
       )