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

Python使用pypdf按指定頁碼范圍批量拆分PDF

 更新時間:2026年01月04日 14:59:32   作者:weixin_46244623  
在處理電子書,掃描書籍或技術(shù)文檔時,經(jīng)常會遇到一個需求,即按照指定頁碼范圍把一個 PDF 拆分成多個 PDF 文件,本文將介紹一種簡單、穩(wěn)定、無需外部依賴的方法,有需要的可以了解下

在處理電子書、掃描書籍或技術(shù)文檔時,經(jīng)常會遇到一個需求:

按照指定頁碼范圍,把一個 PDF 拆分成多個 PDF 文件(例如按章節(jié)拆分)

本文將介紹一種簡單、穩(wěn)定、無需外部依賴的方法,使用 Python 的 pypdf 庫來實現(xiàn) PDF 的批定頁碼分割。

一、環(huán)境準備

Python 版本

Python 3.8+(推薦 3.9 / 3.10 / 3.11)

可用以下命令確認:

python --version

安裝 pypdf

使用 pip 安裝最新版 pypdf:

pip install pypdf

如果你在 Linux / macOS 上,且存在 Python2/3 共存問題,可使用:

pip3 install pypdf

安裝完成后測試是否成功:

from pypdf import PdfReader, PdfWriter
print("pypdf installed OK")

二、實現(xiàn)思路說明

關(guān)鍵點解析

  • PdfReader:讀取原始 PDF
  • PdfWriter:創(chuàng)建新的 PDF 文件
  • PDF 頁碼從 0 開始,而我們?nèi)粘?吹降氖菑?1 開始
  • 用戶只需定義一個頁碼范圍列表即可完成拆分

適用場景

  • 按目錄拆書
  • 按章節(jié)導出
  • 按頁碼人工校正后的分割

三、完整 Python 實現(xiàn)代碼

from pypdf import PdfReader, PdfWriter
import os


def split_pdf_by_page_ranges(input_pdf, output_folder, ranges):
    reader = PdfReader(input_pdf)

    # 創(chuàng)建輸出目錄
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for idx, (start_page, end_page) in enumerate(ranges, 1):
        writer = PdfWriter()

        # PDF 內(nèi)部頁碼從 0 開始,因此要 -1
        for page_num in range(start_page - 1, end_page):
            if page_num < len(reader.pages):
                writer.add_page(reader.pages[page_num])
            else:
                print(f"Warning: page {page_num + 1} out of range.")

        output_filename = (
            f"{output_folder}/chapter_{idx}_pages_{start_page}-{end_page}.pdf"
        )

        with open(output_filename, "wb") as output_file:
            writer.write(output_file)

        print(f"Saved {output_filename}")

四、自定義章節(jié)頁碼范圍

你只需要定義一個 頁碼區(qū)間列表,格式如下:

# ?? 自定義分章節(jié)頁碼(格式:[(開始頁, 結(jié)束頁), ...])
page_ranges = [
    (1, 34),    # 序
    (35, 50),   # 第一章
    (51, 73),   # 第二章
    (74, 93),   # 第三章
    (94, 118),  # 第四章
    (119, 152), # 第五章
    (153, 166), # 第六章
    (167, 183), # 第七章
    (184, 206), # 第八章
    (207, 230), # 第九章
    (231, 251), # 第十章
]

注意事項

  • 頁碼是 PDF 閱讀器中看到的頁碼
  • 不需要關(guān)心 0 / 1 的問題,代碼已處理
  • 超出 PDF 總頁數(shù)會自動提示 Warning,不會報錯

五、執(zhí)行拆分

split_pdf_by_page_ranges(
    "input.pdf",
    "./output_manual_split",
    page_ranges
)

執(zhí)行后目錄結(jié)構(gòu)如下:

output_manual_split/
├── chapter_1_pages_1-34.pdf
├── chapter_2_pages_35-50.pdf
├── chapter_3_pages_51-73.pdf
├── ...
└── chapter_11_pages_231-251.pdf

完整代碼

from pypdf import PdfReader, PdfWriter
import os


def split_pdf_by_page_ranges(input_pdf, output_folder, ranges):
    reader = PdfReader(input_pdf)


    if not os.path.exists(output_folder):
        os.makedirs(output_folder)


    for idx, (start_page, end_page) in enumerate(ranges, 1):
        writer = PdfWriter()


        # 頁碼從 0 開始,用戶輸入通常是從 1 開始
        for page_num in range(start_page - 1, end_page):
            if page_num < len(reader.pages):
                writer.add_page(reader.pages[page_num])
            else:
                print(f"Warning: page {page_num + 1} out of range.")

        output_filename = f"{output_folder}/chapter_{idx}_pages_{start_page}-{end_page}.pdf"
        with open(output_filename, "wb") as output_file:
            writer.write(output_file)


        print(f"Saved {output_filename}")


# ?? 自定義你的分章節(jié)頁碼(格式:[(開始頁, 結(jié)束頁), ...])
page_ranges = [
    (1, 34),   # 序
    (35, 50),  # 第一章
    (51, 73),  # 第二章
    (74,93),   # 第三章
    (94,118),     # 第四章
    (119,152),      # 第五章
    (153,166),      # 第六章
    (167,183),      # 第七章
    (184,206),      # 第八章
    (207,230),      # 第九章
    (231,251),      # 第十章
]


# 用法示例
split_pdf_by_page_ranges("input.pdf", "./output_manual_split", page_ranges)

以上就是Python使用pypdf按指定頁碼范圍批量拆分PDF的詳細內(nèi)容,更多關(guān)于Python pypdf拆分PDF的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • selenium XPath定位的實現(xiàn)示例

    selenium XPath定位的實現(xiàn)示例

    XPath是一種在XML文檔中定位和選擇節(jié)點的語言,通過路徑表達式遍歷XML樹,支持節(jié)點選取、字符串匹配、數(shù)值計算、邏輯運算等功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • Python實現(xiàn)的文本對比報告生成工具示例

    Python實現(xiàn)的文本對比報告生成工具示例

    這篇文章主要介紹了Python實現(xiàn)的文本對比報告生成工具,涉及Python基于difflib模塊實現(xiàn)對文本內(nèi)容進行對比的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python 數(shù)據(jù)處理庫 pandas 入門教程基本操作

    Python 數(shù)據(jù)處理庫 pandas 入門教程基本操作

    pandas是一個Python語言的軟件包,在我們使用Python語言進行機器學習編程的時候,這是一個非常常用的基礎(chǔ)編程庫。本文是對Python 數(shù)據(jù)處理庫 pandas 入門教程,非常不錯,感興趣的朋友一起看看吧
    2018-04-04
  • 基于梯度爆炸的解決方法:clip gradient

    基于梯度爆炸的解決方法:clip gradient

    今天小編就為大家分享一篇基于梯度爆炸的解決方法:clip gradient,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • pycharm + django跨域無提示的解決方法

    pycharm + django跨域無提示的解決方法

    這篇文章主要給大家介紹了關(guān)于pycharm + django跨域無提示的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Keras 快速解決OOM超內(nèi)存的問題

    Keras 快速解決OOM超內(nèi)存的問題

    這篇文章主要介紹了Keras 快速解決OOM超內(nèi)存的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 詳解python字符串相關(guān)str

    詳解python字符串相關(guān)str

    這篇文章主要為大家介紹了python字符串相關(guān)str,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python3 shutil(高級文件操作模塊)實例用法總結(jié)

    Python3 shutil(高級文件操作模塊)實例用法總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Python3 shutil實例用法內(nèi)容,有興趣的朋友們可以學習下。
    2020-02-02
  • Python爬蟲如何破解JS加密的Cookie

    Python爬蟲如何破解JS加密的Cookie

    這篇文章主要介紹了Python爬蟲如何破解JS加密的Cookie,幫助大家更好的理解和使用爬蟲,感興趣的朋友可以了解下
    2020-11-11
  • Pytorch實現(xiàn)簡單自定義網(wǎng)絡(luò)層的方法

    Pytorch實現(xiàn)簡單自定義網(wǎng)絡(luò)層的方法

    這篇文章主要給大家介紹了關(guān)于Pytorch實現(xiàn)簡單自定義網(wǎng)絡(luò)層的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-05-05

最新評論

建宁县| 拉萨市| 余干县| 新竹市| 拉萨市| 松桃| 牟定县| 彰化县| 广东省| 彭山县| 宣恩县| 葵青区| 沂水县| 和硕县| 鹿邑县| 贡觉县| 临清市| 加查县| 察雅县| 剑阁县| 桐城市| 厦门市| 全椒县| 武义县| 枣庄市| 调兵山市| 张家界市| 永济市| 涿鹿县| 涞源县| 济阳县| 大新县| 南澳县| 启东市| 松溪县| 竹山县| 枝江市| 灵川县| 西峡县| 肇源县| 五常市|