在 Python 中将 Docx 转换为 PDF

Muhammad Maisam Abbas 2023年1月30日
  1. 使用 Python 中的 pywin32 包将 Docx 转换为 PDF
  2. 使用 Python 中的 docx2pdf 包将 Docx 转换为 PDF
在 Python 中将 Docx 转换为 PDF

本教程将讨论在 Python 中将 docx 文件转换为 pdf 文件的方法。

使用 Python 中的 pywin32 包将 Docx 转换为 PDF

pywin32通常用于在 Python 中创建和初始化 COM 对象以及使用 Windows 服务。由于它是一个外部包,我们必须在使用它之前安装 pywin32。下面给出了安装 pywin32 的命令。

pip install pywin32

我们可以使用带有此包的 Microsoft Word 应用程序打开 docx 文件并将其另存为 pdf 文件。以下代码示例向我们展示了如何使用 pywin32 包将 docx 文件转换为 pdf 文件。

import os
import win32com.client

wdFormatPDF = 17

inputFile = os.path.abspath("document.docx")
outputFile = os.path.abspath("document.pdf")
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(inputFile)
doc.SaveAs(outputFile, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()

我们在上面的代码中使用 win32com.client 库将 document.docx 转换为 document.pdf。我们使用 doc = word.Documents.Open(inputFile) 打开了 docx 文件,并使用 doc.SaveAs(outputFile, FileFormat=wdFormatPDF) 将其保存为 pdf 文件。最后,我们使用 doc.Close() 函数关闭打开的文档,并使用 word.Quit() 函数退出 Microsoft Word。请注意,必须已经为该代码创建了输出文件才能正常工作。这意味着我们必须在执行上述代码之前手动创建一个名为 document.pdf 的文件。这个过程也可以在 Python 文件处理的帮助下自动化。以下代码片段展示了我们如何进一步自动化整个过程。

import os
import win32com.client

wdFormatPDF = 17

inputFile = os.path.abspath("document.docx")
outputFile = os.path.abspath("document.pdf")
file = open(outputFile, "w")
file.close()
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(inputFile)
doc.SaveAs(outputFile, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()

在上面的代码中,在使用 win32com.client 库打开 Microsoft Word 之前,我们使用 file = open(outputFile, "w") 创建输出文件。

使用 Python 中的 docx2pdf 包将 Docx 转换为 PDF

pywin32 方法工作得很好,让我们对细节进行了很多控制。唯一的缺点是我们必须为它编写大量代码。如果我们需要快速将 docx 文件转换为 pdf 文件而不用过多担心任何低级细节,我们可以使用 Python 中的 docx2pdfdocx2pdf 包为我们提供了简单的函数,可以获取文件名并处理上一节中讨论的所有低级转换内容。docx2pdf 也是一个外部包。下面给出了安装 docx2pdf 软件包的命令。

pip install docx2pdf

以下代码示例向我们展示了如何使用 docx2pdf 包将 docx 文件转换为 pdf 文件。

from docx2pdf import convert

inputFile = "document.docx"
outputFile = "document2.pdf"

convert(inputFile, outputFile)

我们在上面的代码中使用 docx2pdf 包的 convert() 函数将 document.docx 转换为 document.pdf。这段代码的唯一缺点是我们仍然需要在执行这段代码之前创建输出文件。我们可以使用文件处理来自动化这个过程,就像我们在上一节中所做的那样。

from docx2pdf import convert

inputFile = "document.docx"
outputFile = "document2.pdf"
file = open(outputFile, "w")
file.close()

convert(inputFile, outputFile)

在上面的代码中,我们在调用 convert() 函数之前使用 file = open(outputFile, "w") 创建输出文件。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn