【Python】PDF文件處理(PyPDF2、borb、fitz)

Python提供了多種方法和庫用于處理PDF文件,這些工具可以幫助開發者實現諸如讀取、寫入、合并、拆分以及壓縮等功能。以下是幾個常用的Python PDF操作庫及其基本用法(PyPDF2、borb、fitz)。
在這里插入圖片描述

1. PyPDF2

PyPDF2 是一個功能強大的庫,支持各種常見的PDF操作,例如讀取、合并、分割、旋轉頁面等。盡管該庫已經停止更新,但它仍然被廣泛使用。

pip install pypdf2

下面是一個簡單的例子展示如何使用 PyPDF2 合并兩個PDF文件:

import os
from PyPDF2 import PdfMergermerger = PdfMerger()
files = ["file1.pdf", "file2.pdf"]for file in files:if os.path.exists(file):merger.append(file)merger.write("merged_file.pdf")
merger.close()

2. borb

borb 是另一個現代且易于使用的PDF庫,它允許用戶創建、修改現有的PDF文檔,并提供了一些高級特性如加密和簽名。以下是如何打開現有PDF文件并保存更改的一個示例:

pip install borb
from borb.pdf.reader import SimplePDFReader
from borb.pdf.document import Document
from borb.pdf.writer import Writer# 打開已有PDF文件
with open("example.pdf", "rb") as pdf_in:reader = SimplePDFReader(pdf_in)doc: Document = reader.read()# 修改文檔 (此處省略具體修改邏輯)# 將修改后的文檔另存為新文件
with open("output.pdf", "wb") as pdf_out:writer = Writer(pdf_out, doc)writer.write()

3. fitz (PyMuPDF)

fitz(也稱為 PyMuPDF)能夠高效地解析復雜的PDF結構,適合于需要提取圖像或者文本的應用場景。此外,它還可以用來轉換整個PDF成圖片序列。

pip install pymupdf

示例代碼如下所示:

import fitz  # 導入模塊# 加載目標pdf
doc = fitz.open('input.pdf')# 遍歷每一頁并將它們轉為png格式
for page_num in range(len(doc)):page = doc.load_page(page_num)pix = page.get_pixmap(dpi=300)output_filename = f'page_{page_num}.png'pix.save(output_filename)

4. 處理大尺寸PDF的技術手段

對于較大的PDF文件,可以通過以下幾種技術減少其體積:

  • 圖片質量調整:降低分辨率或將高清晰度的照片替換為較低版本;
  • 字體優化:移除未使用的字符集或完全不嵌入字體數據;
  • 清理冗余項:去除隱藏層、空白頁碼區域以及其他無意義的內容;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80150.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

websocketd 10秒教程

websocketd 參考地址:joewalnes/websocketd 官網地址:websocketd websocketd簡述 websocketd是一個簡單的websocket服務Server,運行在命令行方式下,可以通過websocketd和已經有程序進行交互。 現在,可以非常容易地構…

Spring Boot 基于 Cookie 實現單點登錄:原理、實踐與優化詳解

前言 在多系統交互的應用場景中,單點登錄(SSO)能夠顯著提升用戶體驗,減少重復登錄的繁瑣操作。基于 Cookie 的單點登錄方案,憑借其簡單直觀、瀏覽器原生支持的特性,成為快速實現單點登錄的有效方式。本文將…

ModBus協議詳解:從基礎概念到C#實現RTU與TCP通訊

ModBus協議是莫迪康公司為了讓PLC之間進行數據通信而設計出來的協議。它是一種總線協議,是一種一對多,上下級的關系。 它的應用廣泛,具有免費開源,操作簡單的有點,并且可以兼容串口和網絡通訊,兼容也不錯。…

PHP數組排序深度解析:sort()、rsort()、asort()、arsort()、ksort()、krsort() 的適用場景與性能對比

在PHP開發中,數組排序是日常操作的核心技能之一。無論是處理用戶數據、產品列表,還是分析日志信息,合理的排序方法能顯著提升代碼的效率和可維護性。PHP提供了多種數組排序函數(如 sort()、rsort()、asort() 等)&#…

RabittMQ-高級特性2-應用問題

文章目錄 前言延遲隊列介紹ttl死信隊列存在問題延遲隊列插件安裝延遲插件使用事務消息分發概念介紹限流非公平分發(負載均衡) 限流負載均衡RabbitMQ應用問題-冪等性保障順序性保障介紹1順序性保障介紹2消息積壓總結 前言 延遲隊列介紹 延遲隊列(Delaye…

HOW - 在 Mac 上的 Chrome 瀏覽器中調試 Windows 場景下的前端頁面

文章目錄 為什么需要模擬 Windows 環境?一、修改 User-Agent 模擬 Windows 瀏覽器方法 1:通過 Chrome 開發者工具修改 UA方法 2:使用瀏覽器插件 二、模擬 Windows 的字體和滾動條樣式1. 模擬 Windows 字體2. 強制顯示滾動條(模擬 …

如何刪除豆包本地大模型

由于無法選擇大模型的安裝位置,因此會占用C盤大量空間,然后又找到不卸載的地方,經排查豆包大模型安裝位為:C:\Users\[當前電腦用戶]\AppData\Local\Doubao\User Data,只能進行手動卸載。

Linux C語言線程編程入門筆記

目錄 開發環境準備 線程基礎概念 進程與線程的關系 線程生命周期 創建線程 等待線程結束 線程函數和參數 互斥鎖與共享資源保護 總結 開發環境準備 操作系統:以 Linux 為例(Ubuntu/CentOS 等主流發行版)。請確保系統已安裝 GNU C 編…

levelDB的數據查看(非常詳細)

起因:.net大作業天氣預報程序(WPF)答辯時,老師問怎么維持數據持久性的,啟動時加載的數據存在哪里,我明白老師想考的應該是json文件的解析(正反),半天沒答上來存那個文件了(老師默認這個文件是自…

數據分析怎么做?高效的數據分析方法有哪些?

目錄 一、數據分析的對象和目的 (一)數據分析的常見對象 (二)數據分析的目的 二、數據分析怎么做? (一)明確問題 (二)收集數據 (三)清洗和…

手寫 Vue 源碼 === 完善依賴追蹤與觸發更新

目錄 依賴收集的完整實現 trackEffects:建立雙向依賴關系 觸發更新的完整實現 完整的響應式流程 為什么使用 Map 而不是 Set? 總結 在上一篇文章中,我們介紹了 Vue3 響應式系統的基本原理和 activeEffect 的作用。現在,我們將深入探討完善后的依賴追蹤和觸發更新機制…

從代碼學習深度學習 - 區域卷積神經網絡(R-CNN)系列 PyTorch版

文章目錄 前言R-CNNFast R-CNN興趣區域匯聚層 (RoI Pooling)代碼示例:興趣區域匯聚層 (RoI Pooling) 的計算方法Faster R-CNNMask R-CNN雙線性插值 (Bilinear Interpolation) 與興趣區域對齊 (RoI Align)興趣區域對齊層的輸入輸出全卷積網絡 (FCN) 的作用掩碼輸出形狀總結前言…

18個國內wordpress主題推薦

工廠wordpress中文主題 紅藍色搭配的工廠wordpress中文主題,適合從事生產、加工的工廠官方網站使用。 https://www.jianzhanpress.com/?p8533 Pithy設計師wordpress網站模板 精練簡潔的wordpress模板,設計師或設計工作室展示型網站模板。 https://w…

低成本自動化改造技術錨點深度解析

執行摘要 本文旨在深入剖析四項關鍵的低成本自動化技術,這些技術為工業轉型提供了顯著的運營和經濟效益。文章將提供實用且深入的指導,涵蓋老舊設備聯網、AGV車隊優化、空壓機系統智能能耗管控以及此類項目投資回報率(ROI)的嚴謹…

Oracle — 數據管理

介紹 Oracle數據庫作為全球領先的關系型數據庫管理系統,其數據管理能力以高效性、安全性和智能化為核心。系統通過多維度技術實現海量數據的存儲與實時處理,支持高并發事務操作與復雜分析查詢,滿足企業關鍵業務需求。在安全領域,O…

【PhysUnits】3.3 SI 基礎量綱單位(units/base.rs)

一、源碼 這段代碼定義了一系列基礎物理量綱的類型別名,并使用標記 trait Canonical 來表示它們是國際單位制(SI)中的基本單位。 use crate::Dimension; use typenum::{P1, Z0};/// 標記特質,表示基礎量綱單位 pub trait Canoni…

硬件實操技巧記錄

本篇自用,防止自己忘記 焊接技巧 一般都是隨機電烙鐵錫膏組合。 拆電阻時,電烙鐵放在電阻上,加錫膏,這個時候熔點會降低,電阻更容易掉下來,用電烙鐵帶走;焊電阻時,一端點錫膏&…

13.thinkphp的Session和cookie

一.Session 1. 在使用Session之前,需要開啟初始化,在中間件文件middleware.php; // Session 初始化 \think\middleware\SessionInit::class 2. TP6.0不支持原生$_SESSION的獲取方式,也不支持session_開頭的函數&…

TensorFlow中數據集的創建

目錄 前言示例示例1示例2示例3示例4 前言 TensorFlow 的 tf.data.Dataset API 提供了一種靈活且高效的方式來加載和預處理數據。它可以輕松處理大規模數據集,并支持多種數據源格式。 所有數據集相關的內容都在tf.data中,from_tensor_slices:…

第十六章,網絡型攻擊防范技術

網絡攻擊介紹 網絡攻擊 --- 指的是入侵或破壞網絡上的服務器 ( 主機 ) ,盜取服務器的敏感數據或占用網絡帶寬。 網絡攻擊分類: 流量型攻擊 網絡層攻擊 應用層攻擊 單包攻擊 畸形報文攻擊 --- 向目標主機發送有缺陷的IP報文,使得目標在…