使用Python 實現 PDF 到 HTML 的轉換

来源:https://www.cnblogs.com/Yesi/p/18120775
-Advertisement-
Play Games

PDF 文件是共用和分發文檔的常用選擇,但提取和再利用 PDF 文件中的內容可能會非常麻煩。而利用 Python 將 PDF 文件轉換為 HTML 是解決此問題的理想方案之一,這樣做可以增強文檔可訪問性,使文檔可搜索,同時增強文檔在不同場景中的實用性。此外,HTML 格式使得搜索引擎能夠對內容進行索 ...


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 產品論壇上尋求技術支持。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Spring學習總結 Spring基本介紹 Spring 學習的核心內容 1.IOC: 控制反轉, 可以管理java 對象 2.AOP : 切麵編程 3.JDBCTemplate : 是spring 提供一套訪問資料庫的技術, 應用性強,相對好理解 4.聲明式事務: 基於ioc/aop 實現事務管理 ...
  • 大家好,我是白夜,今天和大家聊聊類與對象 一、初識面向對象(瞭解) 1.1、面向過程和麵向對象 面向過程編程 C 語言就是面向過程編程的,關註的是過程,分析出求解問題的步驟,通過函數調用逐步解決問題。 面向對象編程 JAVA 是基於面向對象的,關註的是對象,將一件事情拆分成不同的對象,靠對象之間的交 ...
  • 引言 眾所周知,數據流分析是實現污點分析的一種常用技術 數據流分析分為過程內的數據流分析與過程間的數據流分析。前者是對一個方法體內的數據流分析,主要是基於CFG分析,不涉及方法調用;後者是基於不同方法間的數據流分析,主要是基於ICFG+CG分析,會涉及方法調用。 一、過程內數據流分析 1. CFG的 ...
  • 1.知識補充 1.1 nolocal關鍵字 在之前的課程中,我們學過global關鍵字。 name = 'root' def outer(): name = "武沛齊" def inner(): global name name = 123 inner() print(name) # 武沛齊 out ...
  • 對於實體中包含有公共欄位,像create_at,create_time,update_at,update_time來說,我們沒有必要在每個實體的crud操作中複製同樣的代碼,這樣代碼的味道很壞,我們應該使用mybatis的攔截器機制,將公共欄位統一處理;當然mybatis-puls在實現上更加優雅, ...
  • 拓展閱讀 常見免費開源繪圖工具 OmniGraffle 創建精確、美觀圖形的工具 UML-架構圖入門介紹 starUML UML 繪製工具 starUML 入門介紹 PlantUML 是繪製 uml 的一個開源項目 UML 等常見圖繪製工具 繪圖工具 draw.io / diagrams.net 免 ...
  • 1. 工程搭建 前端的工程運行流程: 進入項目目錄執行cmd命令: 若是第一次啟動需要依次輸入如下命令: npm install npm run build npm run dev 之後直接執行 npm run dev 即可! 1.1 新建maven工程 新建maven工程blog作為父工程,然後在 ...
  • 新網站對接到KC的部署 kc的環境 向kc申請自己的客戶端 kc的登錄介面 通過code換token介面 刷新token介面 kc的用戶信息介面 kc的jwt token說明 1. kc的環境 測試環境:https://test-kc.xxx.com 預發佈環境:https://pre-kc.xxx ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...