[玩转系统] PowerShell 将 Word 转换为 PDF [2 种方法]
作者:精品下载站 日期:2024-12-14 05:28:53 浏览:13 分类:玩电脑
PowerShell 将 Word 转换为 PDF [2 种方法]
使用 Microsoft Word COM 对象
要将给定的 Microsoft Word 文档转换为 PDF:
- 使用
New-Object
cmdlet 创建 COM 对象。 - 使用
Open()
方法打开 MS Word 文件。 - 使用
SaveAs()
方法保存 PDF 文件。 - 使用
Close()
方法关闭 Word 文档。 - 使用
Quit()
方法退出 Word 应用程序。
使用 MS Word COM 对象:
$wordApplication = New-Object -ComObject Word.Application
$document = $wordApplication.Documents.Open("E:\Test\file.docx")
$pdfFilePath = "E:\Test\PDFFile.pdf"
$document.SaveAs([ref] $pdfFilePath, [ref] 17)
$document.Close()
$wordApplication.Quit()
我们必须在本地计算机上安装 Microsoft Word 才能使用上述解决方案。首先,我们使用带有 -ComObject
参数的 New-Object
cmdlet 创建一个新的 Word COM 对象并将其分配给 $wordApplication
变量。什么是 COM 对象,为什么我们要创建 Word COM 对象;我们可以制作一个简单的物体,对吧?
在 PowerShell 中,组件对象模型组件(也称为 COM 组件)是一种二进制接口标准,它允许软件组件相互交互,而不管它们是使用任何编程语言或操作系统进行编程或开发的。
COM 对象提供了许多属性、方法和事件,我们可以在 PowerShell 脚本中使用它们来执行自动化并与其他应用程序进行通信。由于我们要与 Microsoft Word 应用程序交互,因此必须使用 COM 对象。
为了在 PowerShell 中使用 COM 对象,我们使用 New-Object
cmdlet 创建引用 COM 组件的 COM 对象实例,并让我们调用其函数/方法、访问属性和处理事件。
因此,上述脚本中的第一行创建了一个代表 Microsoft Word 应用程序的 COM 对象,并将其分配给 PowerShell 中的 $wordApplication
变量;现在,该变量将用于打开、操作和完成其他与 Word 相关的作业。
COM 对象特定于 Windows 操作系统,需要将它们代表的组件或应用程序安装在我们的本地计算机上。请记住,熟悉 PowerShell 文档和最佳实践至关重要,因为 COM 对象有时涉及复杂的数据类型转换(转换)和内存管理。
接下来,我们使用 $wordApplication
对象的 Document
属性的 Open()
方法,该方法将源文件的路径作为参数并将其打开;该文档对象已分配给 $document
变量。之后,我们定义了一个名为 $pdfFilePath
的变量,并使用转换后的 PDF 文件(我们的输出文件)的文件路径和名称对其进行初始化。
然后,我们使用 $document
对象的 SaveAs()
方法将提供的 Word 文档保存为 PDF 文件。 SaveAs()
方法有两个参数;第一个是输出文件的文件路径和名称,第二个是 PDF 的文件格式常量 (17
);两个参数均使用 [ref]
作为引用传递。最后,我们使用Close()
方法关闭Word文档,并使用Quit()
方法退出Word应用程序。
在上面的示例中,我们转换了一个文件,该文件必须具有 .docx 扩展名,但是如果我们有多个文件怎么办?其中一些带有 .doc
扩展名,另一些带有 .docx
扩展名?在这种情况下,我们将使用以下解决方案。
使用 MS Word COM 对象:
$sourceFilesPath = "E:\Test"
$wordApplication = New-Object -ComObject Word.Application
Get-ChildItem -Path $sourceFilesPath -Filter *.doc? | ForEach-Object {
$document = $wordApplication.Documents.Open($_.FullName)
$pdfFilePath = "$($_.DirectoryName)$($_.BaseName).pdf"
$document.SaveAs([ref] $pdfFilePath, [ref] 17)
$document.Close()
}
$wordApplication.Quit()
此代码与前面的示例类似。但在这里,我们使用 Get-ChildItem
从给定的 $sourceFilesPath
检索所有文件,并使用 -Filter
参数过滤它们以抓取文件.doc
和 .docx
扩展名。接下来,我们使用 ForEach-Object
cmdlet 一次循环遍历所有文件,打开它,存储输出文件的路径和名称,将文件另存为 PDF 并关闭 Word 文档。最后,在检查完所有 Word 文件后,我们使用 Quit()
方法退出 Word 应用程序。
我们还可以使用 Microsoft Office Interop API 将 MS Word 文件转换为 PDF 文件。请参阅以下示例进行演示。
使用 MS Office 互操作 API:
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$sourceFilesPath = "E:\Test"
$wordApplication = New-Object -ComObject Word.Application
Get-ChildItem -Path $sourceFilesPath -Filter *.doc? | ForEach-Object {
$document = $wordApplication.Documents.Open($_.FullName)
$pdfFilePath = "$($_.DirectoryName)$($_.BaseName).pdf"
$document.SaveAs([ref] $pdfFilePath, [ref] [Microsoft.Office.Interop.Word.WdExportFormat]::wdExportFormatPDF)
$document.Close()
}
$wordApplication.Quit()
首先,我们将 Microsoft Office Interop API 添加为 Add-Type -AssemblyName Microsoft.Office.Interop.Word
,它表示一个 Word 文档。我们使用其 wdExportFormatPDF
字段作为 SaveAs()
方法中的参数将文档导出为 PDF 格式。它是 MS Office Interop API 中 17
(PDF 文件格式常量)的替代方案。
使用 Microsoft 打印到 PDF 打印机
要将 MS Word 文件转换为 PDF:
- 使用
New-Object
cmdlet 创建Word COM 对象。 - 使用
Open()
方法打开提供的 Word 文档。 - 使用
PrintOut()
方法将 Word 文档打印为 PDF 文件。 - 使用
Close()
方法关闭 Word 文档。 - 使用
Quit()
方法退出 Word 应用程序。
使用 MS Print 转 PDF 打印机:
$wordApplication = New-Object -ComObject Word.Application
$document = $wordApplication.Documents.Open("E:\Test\file.docx")
$pdfFilePath = "E:\Test\PDFFile.pdf"
$document.PrintOut([ref] $false, [ref] $false, [ref] 0, [ref] $pdfFilePath)
$document.Close()
$wordApplication.Quit()
此代码片段与上一节中的第一个示例相同,但有一点不同。我们使用 $document
对象的 PrintOut()
方法在指定的目标 $pdfFilePath
处将 Word 文件打印为 PDF 文件。 该方法采用四个参数,简要描述如下:
-
$false
表示我们不想将文件打印到物理打印机。 -
$false
表示我们不想显示Print
对话框。 -
0
指定打印给定 Word 文档的所有页面。 $pdfFilePath
指明 PDF 文件的存储目标。
所有参数均使用 [ref]
作为引用传递。我们还可以使用相同的代码但使用 PrintOut()
方法对 .doc
和 .docx
文件执行此操作。
使用 MS Print 转 PDF 打印机:
$sourceFilesPath = "E:\Test"
$wordApplication = New-Object -ComObject Word.Application
Get-ChildItem -Path $sourceFilesPath -Filter *.doc? | ForEach-Object {
$document = $wordApplication.Documents.Open($_.FullName)
$pdfFilePath = "$($_.DirectoryName)$($_.BaseName).pdf"
$document.PrintOut([ref] $false, [ref] $false, [ref] 0, [ref] $pdfFilePath)
$document.Close()
}
$wordApplication.Quit()
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag