使用Python 實現 PDF 到 HTML 的轉換

E-iceblue發表於2024-04-08

PDF 檔案是共享和分發文件的常用選擇,但提取和再利用 PDF 檔案中的內容可能會非常麻煩。而利用 Python 將 PDF 檔案轉換為 HTML 是解決此問題的理想方案之一,這樣做可以增強文件可訪問性,使文件可搜尋,同時增強文件在不同場景中的實用性。此外,HTML 格式使得搜尋引擎能夠對內容進行索引,從而更有可能在網路上被發現。藉助 Python 的靈活性和易用性,無論是初學者還是有經驗的開發人員都可以輕鬆高效地使用 Python 來將 PDF 轉換為 HTML。

本文重點介紹如何在 Python 程式中將 PDF 轉換為 HTML,主要包括以下內容:

  • 使用Python 將 PDF 轉換為 HTML 方法概覽
  • 使用 Python 程式碼將 PDF 轉換為單個 HTML 檔案
  • 使用 Python 將 PDF 轉換為不嵌入影像的 HTML
  • 使用 Python 將 PDF 轉換為多個 HTML 檔案

本文介紹的方法使用了 Spire.PDF for Python 工具,可以從官網下載,也可以透過 PyPI 進行安裝:

pip install Spire.PDF

Python PDF 轉 HTML 方法概覽

在 Spire.PDF for Python 中,PdfDocument 類表示一個 PDF 文件。我們可以使用該類下的 LoadFromFile() 方法載入 PDF 檔案,然後使用 SaveToFile() 方法將文件儲存為其他格式,如 HTML,從而輕鬆實現從 PDF 到 HTML 的轉換。

此外,該 API 還提供了 PdfDocument.ConvertOptions 屬性下的 SetConvertHtmlOptions() 方法,用於在轉換過程中設定轉換選項。以下是可以傳遞給該方法的引數,用於設定最大頁數、SVG 嵌入選項、影像嵌入選項和 SVG 質量選項:

  • useEmbeddedSvg(bool):當設定為 True 時,允許在轉換後的 HTML 檔案中嵌入 SVG。生成的 HTML 檔案將包含 PDF 文件中的所有元素,包括影像,都在一個 HTML 檔案中。
  • useEmbeddedImg(bool):當設定為 True 時,允許在轉換後的 HTML 檔案中嵌入影像。此引數僅在 useEmbeddedSvg 設定為 False 時起作用。
  • maxPageOneFile(int):設定單個 HTML 檔案中包含的最大頁數。如果 PDF 的頁數超過指定的數字,將生成多個 HTML 檔案,每個檔案包含部分頁數。
  • useHighQualityEmbeddedSvg(bool):當設定為 True 時,在 HTML 轉換過程中確保使用高質量的嵌入 SVG 影像。

使用 Python 將 PDF 轉換為單個 HTML 檔案

以下程式碼示例展示瞭如何直接使用 Python 將 PDF 轉換為 HTML,不設定任何轉換選項。在這種情況下,我們只需要使用 LoadFromFile 方法載入 PDF 檔案,並使用 SaveToFile 方法將其儲存為 HTML 檔案。轉換後的 HTML 檔案將是一個包含嵌入影像和其他元素的單個 HTML 檔案。

from spire.pdf.common import *
from spire.pdf import *

# 建立一個PdfDocument類的物件
doc = PdfDocument()

# 載入一個PDF文件
doc.LoadFromFile("示例.pdf")

# 將文件轉換為HTML
doc.SaveToFile("output/HTML/PDF轉HTML.html", FileFormat.HTML)
doc.Close()

轉換效果:

使用 Python 將 PDF 轉換為不嵌入影像的 HTML

透過將 useEmbeddedSvg 引數設定為 False,我們可以將 PDF 文件轉換為不嵌入影像等資訊的單 HTML 檔案,文件中的影像和 CSS 檔案與 HTML 分離並儲存在一個資料夾中。這樣可以方便對轉換後的 HTML 檔案進行進一步編輯,以及對影像進行其他操作。

from spire.pdf.common import *
from spire.pdf import *

# 建立一個PdfDocument類的物件
doc = PdfDocument()

# 載入一個PDF文件
doc.LoadFromFile("示例.pdf")

# 禁用SVG嵌入
doc.ConvertOptions.SetPdfToHtmlOptions(False)

# 將文件轉換為HTML
doc.SaveToFile("output/HTML/PDF轉不嵌入SVG的HTML.html", FileFormat.HTML)
doc.Close()

轉換結果:

使用 Python 將 PDF 轉換為多個 HTML 檔案

在 useEmbeddedSvg 設定為 False 的前提下,SetPdfToHtmlOptions 方法允許使用 maxPageOneFile(int) 引數確定每個轉換後的 HTML 檔案中包含的最大頁數。此功能可實現將 PDF 文件在轉換過程中拆分成多個檔案。例如,將該引數設定為 1 將使每個頁面被轉換為一個單獨的 HTML 檔案。

from spire.pdf.common import *
from spire.pdf import *

# 建立一個PdfDocument類的物件
doc = PdfDocument()

# 載入一個PDF文件
doc.LoadFromFile("示例.pdf")

# 禁用SVG嵌入
doc.ConvertOptions.SetPdfToHtmlOptions(False, False, 1, False)

# 將文件轉換為HTML
doc.SaveToFile("output/HTML/PDF轉多個HTML.html", FileFormat.HTML)
doc.Close()

轉換結果:

總結

本文演示瞭如何使用 Python 將 PDF 轉換為 HTML,並提供了多種轉換選項,例如轉換為單個 HTML 檔案、將 HTML 檔案與影像分離以及在轉換過程中拆分 PDF 文件。藉助 Spire.PDF for Python,使用者可以使用簡單高效的方法進行 Python 中的 PDF 到 HTML 轉換,並支援靈活的自定義選項。

如果在使用該 API 進行 PDF 到 HTML 轉換時遇到任何問題,使用者可以在 Spire 產品論壇上尋求技術支援。

相關文章