我正在尝试使用以下脚本将Word文档转换为PDF。
我正在做的是:
-
首先创建一个空的 PDF 文件作为输出文件
-
然后用转换后的 Word 文件替换该文件。
我的脚本如下:
#Convert Word formats to PDF
Param(
[string]$inputPath,
[string]$outputPath
)
$wdFormatPDF = 17
$File = $inputPath
$Word=NEW-OBJECT –COMOBJECT WORD.APPLICATION
$Doc=$Word.Documents.Open($File)
$Doc.saveas([ref]$outputPath,[ref]$wdFormatPDF)
$Doc.close()
$Word.Quit()
$Word = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
Doc.saveas()
函数不会替换输出的 pdf 文件。好像我之前没有创建输出文件,而只是指定一个要输出的虚拟文件名,它会创建该文件。
但是我如何替换我正在创建的 PDF 文件。PDF 文件是通过 JAVA 创建的。通过 java 命令运行通过 powershell 运行脚本。
cmd 如下,
powershell -NonInteractive -NoLogo -NoProfile -ExecutionPolicy ByPass
-File "D:/wordToPdf.ps1" -inputPath D:/Files/TestLetter.docx
-outputPath D:/Files/PDF_TestLetter.pdf
TestLetter
是要转换的word文档,PDF_TestLetter
已经创建了空的PDF文档。因此需要替换此PDF文档。
根据 SaveAs() 函数的文档,无法替换已经存在的文档。我建议在实际保存文件之前尝试删除文件(如果存在)(请参阅链接)。
试试这个:
-
创建您的空白PDF文件(我不确定为什么要这样做)。称之为
filename.pdf
. -
将
filename.pdf
重命名为filename.pdf.bak
-
生成输出的 PDF 文件。如果此生成失败,请删除该文件并将
filename.pdf.bak
重命名回filename.pdf
-
删除
filename.pdf.bak.