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

Python使用PyMuPDF操作PDF的代碼示例

 更新時(shí)間:2025年02月28日 09:59:40   作者:morris131  
PyMuPDF,也被稱為fitz(這是其導(dǎo)入時(shí)的常用別名),是一個(gè)功能強(qiáng)大的Python庫,用于處理PDF和其他文檔格式,與 PyPDF2相比,PyMuPDF提供了更多的功能和更好的性能,特別是在處理復(fù)雜的PDF文件時(shí),本文給大家介紹了Python使用PyMuPDF操作PDF,需要的朋友可以參考下

安裝PyMuPDF

首先,你需要安裝PyMuPDF庫。你可以使用pip來安裝它:

pip install pymupdf

讀取PDF文件

讀取PDF文件并打印其頁數(shù):

import fitz

# 使用pymupdf讀取pdf文件
if __name__ == '__main__':
    # 打開 PDF 文件
    doc = fitz.open('example.pdf')

    print(doc.page_count)

提取文本

從PDF文件中提取文本:

import fitz

# 使用Pymupdf讀取pdf文本
if __name__ == '__main__':
    # 打開 PDF 文件
    doc = fitz.open('example1.pdf')

    print(doc.load_page(0).get_text())

拆分PDF文件

將PDF文件拆分為兩個(gè)文件,一個(gè)文件包含奇數(shù)頁,一個(gè)文件包含偶數(shù)頁:

import fitz

# 使用pymupdf將PDF文件拆分為兩個(gè)文件,一個(gè)文件包含奇數(shù)頁,一個(gè)文件包含偶數(shù)頁:
if __name__ == '__main__':
    # 創(chuàng)建一個(gè) PDF 寫入器對(duì)象
    odd_writer = fitz.open()
    even_writer = fitz.open()

    doc = fitz.open('example.pdf')

    for page_num in range(doc.page_count):
        if page_num % 2 == 0:
            odd_writer.insert_pdf(doc, from_page=page_num, to_page=page_num)
        else:
            even_writer.insert_pdf(doc, from_page=page_num, to_page=page_num)

    odd_writer.save('example1.pdf')
    even_writer.save('example2.pdf')

合并PDF文件

你可以將多個(gè)PDF文件合并為一個(gè):

import fitz

# 使用PymuPDF合并兩個(gè)pdf文件
if __name__ == '__main__':
    # 打開要合并的 PDF 文件
    pdf_files = ['example1.pdf', 'example2.pdf']

    # 創(chuàng)建一個(gè)新的 PDF 文檔對(duì)象
    merged_doc = fitz.open()

    # 遍歷每個(gè)要合并的 PDF 文件
    for pdf_file in pdf_files:
        # 打開當(dāng)前的 PDF 文件
        temp_doc = fitz.open(pdf_file)
        # 將當(dāng)前 PDF 文件的所有頁面添加到合并后的文檔中
        for page_num in range(len(temp_doc)):
            merged_doc.insert_pdf(temp_doc, from_page=page_num, to_page=page_num)
        # 關(guān)閉當(dāng)前的 PDF 文件(不需要保存,因?yàn)槲覀冎皇亲x取它)
        temp_doc.close()

    # 保存合并后的 PDF 文件
    merged_doc.save("merged.pdf")

裁剪PDF頁面

PyPDF2并不直接支持裁剪頁面,但你可以通過提取頁面的部分內(nèi)容并創(chuàng)建一個(gè)新的頁面來實(shí)現(xiàn)這一功能。以下是一個(gè)簡(jiǎn)單的示例,演示如何裁剪頁面的上半部分:

import fitz

# 使用pymupdf裁剪PDF頁面
if __name__ == '__main__':

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

    # 選擇要裁剪的頁面(例如第一頁)
    page = doc.load_page(0)

    # 定義裁剪區(qū)域(矩形,格式為 [x0, y0, x1, y1])
    # 這里我們裁剪頁面的上半部分
    rect = [page.rect.x0, page.rect.y0, page.rect.x1, page.rect.y0 + (page.rect.height / 2)]

    # 裁剪頁面(這會(huì)改變?cè)柬撁妫?
    page.set_cropbox(rect)
    page.clean_contents()  # 清理頁面內(nèi)容(可選,但推薦)

    # 保存修改后的 PDF 文件
    doc.save("cropped_example.pdf")

加密PDF

import fitz

# 使用PyPDF2加密pdf
if __name__ == '__main__':
    doc = fitz.open("example.pdf")

    # 設(shè)置加密參數(shù)
    doc.save(
        "encrypted.pdf",
        encryption=fitz.PDF_ENCRYPT_AES_256,  # 加密算法
        user_pw="password123",  # 用戶密碼(打開密碼)
        owner_pw="password123",  # 所有者密碼
        permissions=0b1111000000,  # 權(quán)限標(biāo)志
        garbage=3,  # 清理冗余數(shù)據(jù)
        deflate=True,  # 壓縮內(nèi)容
    )

與pypdf2的比較

PyPDF2:

  • 基礎(chǔ)操作:專注于PDF的合并、拆分、頁面旋轉(zhuǎn)、加密/解密、添加水印等基礎(chǔ)功能。

  • 文本提?。褐С趾?jiǎn)單文本提取,但對(duì)復(fù)雜布局(如雙欄排版、表格)的支持較弱,可能破壞文本順序。

  • 輕量級(jí):適合輕量級(jí)任務(wù),如快速合并多個(gè)文檔或添加密碼保護(hù)。

  • 大文件處理:處理大文件(如7000頁以上)時(shí)速度較慢(需數(shù)百秒),內(nèi)存占用較高。

  • 復(fù)雜文檔兼容性:對(duì)含復(fù)雜圖形、表單或加密文件的處理可能失敗,文本提取易出現(xiàn)亂碼。

PyMuPDF:

  • 全能處理:支持PDF的讀取、編輯、合并、拆分,同時(shí)能提取文本、圖像、表格,甚至支持OCR識(shí)別和PDF轉(zhuǎn)圖像。

  • 高級(jí)功能:可解析表格(保留列表結(jié)構(gòu))、處理注釋和表單、生成PDF/A格式文檔,以及通過Tesseract集成實(shí)現(xiàn)OCR。

  • 多格式支持:兼容PDF、XPS、CBZ等格式,適用場(chǎng)景更廣泛。

  • 大文件處理:基于MuPDF引擎,采用優(yōu)化算法,處理同樣文件僅需幾秒,支持多線程加速,渲染圖像效率更高。

  • 復(fù)雜文檔兼容性:在處理掃描件、加密文檔時(shí)表現(xiàn)更穩(wěn)定,且能保留雙欄文本的原始順序

以上就是Python使用PyMuPDF操作PDF的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于Python PyMuPDF操作PDF的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

鱼台县| 庐江县| 高邑县| 渝北区| 随州市| 平乡县| 固始县| 洪洞县| 蒙城县| 赤城县| 修水县| 彭泽县| 贵溪市| 大石桥市| 灵台县| 绍兴市| 津南区| 晋宁县| 合阳县| 甘泉县| 岳西县| 马山县| 咸丰县| 伊吾县| 万全县| 汤阴县| 崇明县| 通海县| 呼玛县| 镶黄旗| 资阳市| 射阳县| 宜章县| 襄樊市| 大同县| 惠安县| 苗栗市| 梁山县| 罗平县| 沙湾县| 平度市|