最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用PyMuPDF(fitz)處理PDF文檔的操作指南

 更新時(shí)間:2025年07月18日 11:01:32   作者:初級(jí)bug開發(fā)工程師  
在Python中,PyMuPDF 是一個(gè)功能強(qiáng)大且高效的庫,用于處理多種文檔格式,尤其是PDF,它基于 MuPDF 引擎,提供了豐富的功能,包括文檔的讀取、寫入、修改、渲染和文本提取等,以下是一些關(guān)鍵用法和示例代碼,需要的朋友可以參考下

使用 PyMuPDF (fitz) 處理 PDF 文檔

PyMuPDF 是一個(gè)功能強(qiáng)大且高效的 Python PDF 處理庫,它基于 MuPDF 引擎,提供了豐富的 PDF 操作功能。以下是詳細(xì)使用方法:

安裝 PyMuPDF

pip install pymupdf

基礎(chǔ)功能示例

1. 打開和讀取 PDF 文檔

import fitz  # PyMuPDF 的導(dǎo)入名稱

# 打開 PDF 文件
doc = fitz.open("example.pdf")

# 獲取文檔信息
print(f"頁數(shù): {doc.page_count}")
print(f"元數(shù)據(jù): {doc.metadata}")

# 讀取第一頁文本
page = doc.load_page(0)  # 0 表示第一頁
text = page.get_text()
print(text)

# 關(guān)閉文檔
doc.close()

2. 提取頁面內(nèi)容

# 提取所有頁面文本
for page_num in range(doc.page_count):
    page = doc.load_page(page_num)
    print(f"第 {page_num+1} 頁內(nèi)容:")
    print(page.get_text())

3. 渲染 PDF 為圖像

# 將第一頁渲染為圖像
page = doc.load_page(0)
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))  # 2倍縮放提高清晰度
pix.save("page0.png")  # 保存為PNG

高級(jí)功能

1. 搜索文本

# 在整個(gè)文檔中搜索特定文本
for page_num in range(doc.page_count):
    page = doc.load_page(page_num)
    text_instances = page.search_for("搜索關(guān)鍵詞")
    
    for inst in text_instances:
        print(f"在第 {page_num+1} 頁找到匹配:")
        print(f"位置: {inst}")

2. 提取帶格式的文本

# 提取帶格式的文本(保留布局)
text = page.get_text("blocks")  # 返回文本塊列表
for block in text:
    print(block[4])  # 文本內(nèi)容在元組的第5個(gè)位置

3. 處理 PDF 鏈接和書簽

# 獲取所有鏈接
links = page.get_links()
for link in links:
    if link["kind"] == fitz.LINK_URI:  # 網(wǎng)頁鏈接
        print(f"找到URL鏈接: {link['uri']}")

# 獲取文檔書簽
toc = doc.get_toc()  # 獲取目錄
for item in toc:
    print(f"層級(jí) {item[0]}, 標(biāo)題: {item[1]}, 頁碼: {item[2]}")

4. 修改 PDF 文檔

# 創(chuàng)建新文檔
new_doc = fitz.open()

# 從原文檔復(fù)制頁面
new_doc.insert_pdf(doc, from_page=0, to_page=2)  # 復(fù)制前3頁

# 添加新頁面
new_page = new_doc.new_page(width=595, height=842)  # A4尺寸
new_page.insert_text((100, 100), "這是新添加的文本")

# 保存修改后的文檔
new_doc.save("modified.pdf")
new_doc.close()

性能優(yōu)化技巧

  1. 批量處理頁面
# 高效處理多頁
with fitz.open("large.pdf") as doc:
    for page in doc:  # 直接迭代比load_page更快
        text = page.get_text()
  1. 并行處理
from concurrent.futures import ThreadPoolExecutor

def process_page(page_num):
    with fitz.open("large.pdf") as doc:
        page = doc.load_page(page_num)
        return page.get_text()

with ThreadPoolExecutor() as executor:
    results = list(executor.map(process_page, range(doc.page_count)))
  1. 選擇性加載
# 只加載需要的頁面
doc = fitz.open("large.pdf")
page = doc[10]  # 直接訪問第11頁

常見問題解決

  1. 中文顯示問題
# 確保系統(tǒng)有中文字體
text = page.get_text("text", flags=fitz.TEXT_PRESERVE_LIGATURES)
  1. 加密PDF處理
doc = fitz.open("encrypted.pdf", password="123456")
  1. PDF/A兼容性檢查
if doc.can_save_incrementally():
    print("支持增量保存")

PyMuPDF 以其出色的性能(比其他庫快5-10倍)和豐富的功能成為處理PDF的首選。對(duì)于需要高性能PDF處理的場景,它是最佳選擇。

到此這篇關(guān)于Python使用PyMuPDF(fitz)處理PDF文檔的操作指南的文章就介紹到這了,更多相關(guān)Python PyMuPDF處理PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyTorch安裝與基本使用詳解

    PyTorch安裝與基本使用詳解

    這篇文章主要介紹了PyTorch安裝與基本使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • PyQt5 如何讓界面和邏輯分離的方法

    PyQt5 如何讓界面和邏輯分離的方法

    這篇文章主要介紹了PyQt5 如何讓界面和邏輯分離的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python使用bs4爬取boss直聘靜態(tài)頁面

    python使用bs4爬取boss直聘靜態(tài)頁面

    這篇文章主要介紹了python如何使用bs4爬取boss直聘靜態(tài)頁面,幫助大家更好的理解和學(xué)習(xí)爬蟲,感興趣的朋友可以了解下
    2020-10-10
  • Python使用Spire.XLS for Python輕松實(shí)現(xiàn)Excel轉(zhuǎn)PDF的完整指南

    Python使用Spire.XLS for Python輕松實(shí)現(xiàn)Excel轉(zhuǎn)PDF的完整指南

    在日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要將 Excel 文檔轉(zhuǎn)換為 PDF 格式,今天我們將介紹如何使用 Spire.XLS for Python 庫來實(shí)現(xiàn) Excel 到 PDF 的高效轉(zhuǎn)換,有需要的可以了解下
    2025-10-10
  • Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路

    Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路

    最近在學(xué)習(xí)Python,正好今天在學(xué)習(xí)隨機(jī)數(shù),本文實(shí)現(xiàn)了Python實(shí)現(xiàn)隨機(jī)生成迷宮并自動(dòng)尋路,感興趣的可以了解一下
    2021-06-06
  • Python幫你解決手機(jī)qq微信內(nèi)存占用太多問題

    Python幫你解決手機(jī)qq微信內(nèi)存占用太多問題

    你有沒有發(fā)現(xiàn)以前16G內(nèi)存也可以裝幾個(gè)游戲玩,現(xiàn)在128G的卻日常使用都不夠了?更不用說裝什么游戲,這其實(shí)是軟件內(nèi)存占用過多導(dǎo)致的,今天我們用python來清理下
    2022-02-02
  • 微信跳一跳python輔助軟件思路及圖像識(shí)別源碼解析

    微信跳一跳python輔助軟件思路及圖像識(shí)別源碼解析

    這篇文章主要介紹了微信跳一跳python輔助軟件思路及圖像識(shí)別源碼解析,需要的朋友可以參考下
    2018-01-01
  • Python的列表推導(dǎo)式實(shí)例詳細(xì)解析

    Python的列表推導(dǎo)式實(shí)例詳細(xì)解析

    這篇文章主要介紹了Python的列表推導(dǎo)式實(shí)例詳細(xì)解析,列表推導(dǎo)式是Python構(gòu)建列表list的一種快捷方式,可以使用簡潔的代碼就創(chuàng)建出一個(gè)列表,需要的朋友可以參考下
    2023-07-07
  • 關(guān)于pip安裝opencv-python遇到的問題

    關(guān)于pip安裝opencv-python遇到的問題

    這篇文章主要介紹了關(guān)于pip安裝opencv-python遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python一行命令實(shí)現(xiàn)自動(dòng)生成?requirements.txt

    Python一行命令實(shí)現(xiàn)自動(dòng)生成?requirements.txt

    一個(gè)清晰、準(zhǔn)確的requirements.txt文件能夠記錄項(xiàng)目所依賴的所有第三方庫及其版本,下面我們就來看看如何使用Python一行命令實(shí)現(xiàn)自動(dòng)生成?requirements.txt吧
    2026-03-03

最新評(píng)論

淄博市| 迁安市| 江都市| 潢川县| 偏关县| 区。| 甘南县| 玉树县| 新蔡县| 南京市| 崇州市| 嘉义县| 克山县| 丰原市| 丰顺县| 邻水| 阿克苏市| 辰溪县| 乐至县| 苍溪县| 观塘区| 临泉县| 宣恩县| 溧水县| 顺昌县| 垦利县| 旌德县| 宁波市| 通化县| 清原| 长沙县| 星子县| 平湖市| 绩溪县| 宁蒗| 奉节县| 金门县| 济南市| 邵阳县| 奇台县| 清流县|