在 Python 中將 Docx 轉換為 PDF

Muhammad Maisam Abbas 2023年1月30日 2021年10月2日
  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