欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中高效拆分PDF文檔的多種方法指南

 更新時間:2025年09月24日 08:22:00   作者:用戶372157426135  
當 PDF 文檔頁數(shù)較多時,我們往往需要提取部分內(nèi)容或者將文檔拆分成多個文件,下面小編就為大家簡單介紹一下如何通過Spire.PDF for Python實現(xiàn)PDF的拆分處理吧

在工作和學習中,PDF 文檔已經(jīng)成為我們最常見的文件格式之一。它可以完整保存文檔的排版、字體和圖片,使報告、合同、教材或發(fā)票在不同設(shè)備上都能保持一致。然而,當 PDF 文檔頁數(shù)較多時,我們往往需要提取部分內(nèi)容或者將文檔拆分成多個文件,以便于管理、分發(fā)或歸檔。

手動拆分 PDF 不僅耗時,而且容易出錯;使用在線工具雖然方便,但涉及敏感信息時存在一定的風險,例如合同條款或財務報表等文件不宜上傳到第三方平臺。

Python 提供了一種靈活、安全的解決方案,通過編寫腳本可以實現(xiàn)自動化處理 PDF 文件,不僅可以根據(jù)頁碼或內(nèi)容拆分,還可以處理加密文件和復雜結(jié)構(gòu)文檔。本文將詳細介紹幾種常用的 PDF 拆分方案,包括按頁碼范圍拆分、拆分為單頁文件、按固定頁數(shù)間隔拆分,以及處理加密文檔和按書簽拆分的方法。示例中將使用 Spire.PDF for Python 庫,這是一款功能全面、操作簡單的 PDF 處理工具,能夠滿足日常大部分拆分需求。

安裝 Spire.PDF for Python

在使用以下示例之前,需要先安裝 Spire.PDF:

pip install spire.pdf

安裝完成后,即可在 Python 中使用 PdfDocument 類對 PDF 進行操作。

1. 按頁碼范圍拆分 PDF

在實際場景中,我們常常需要提取 PDF 中的一段連續(xù)頁碼。例如從 50 頁的報告中提取第 5 到第 10 頁,單獨發(fā)送或歸檔。Spire.PDF 提供了 InsertPageRange 方法,可方便地實現(xiàn)這一需求。

from spire.pdf.common import *
from spire.pdf import *

def split_pdf_by_page_range(input_pdf, start_page, end_page, output_pdf):
    """
    將 PDF 中指定頁碼范圍的頁面提取為新文件。
    :param input_pdf: 輸入 PDF 文件路徑
    :param start_page: 起始頁碼(從1開始)
    :param end_page: 結(jié)束頁碼(從1開始)
    :param output_pdf: 輸出 PDF 文件路徑
    """
    pdf = PdfDocument()
    pdf.LoadFromFile(input_pdf)
    total_pages = pdf.Pages.Count

    if start_page < 1 or end_page > total_pages or start_page > end_page:
        print(f"錯誤:頁碼范圍無效,文檔總頁數(shù):{total_pages}")
        pdf.Close()
        return

    new_pdf = PdfDocument()
    new_pdf.InsertPageRange(pdf, start_page - 1, end_page - 1)

    new_pdf.SaveToFile(output_pdf)
    pdf.Close()
    new_pdf.Close()
    print(f"已成功提取第 {start_page} 到 {end_page} 頁,保存為 {output_pdf}")

# 示例
split_pdf_by_page_range("報告.pdf", 5, 10, "拆分結(jié)果-5-10頁.pdf")

2. 拆分為單頁 PDF

有時需要將每頁單獨保存為獨立文件,例如批量處理合同或發(fā)票。Spire.PDF 提供了 Split 方法,一行代碼即可實現(xiàn)拆分,無需手動循環(huán)處理每一頁。

from spire.pdf.common import *
from spire.pdf import *

doc = PdfDocument()
doc.LoadFromFile("報告.pdf")

# 將 PDF 拆分為單頁文件,文件名中 {0} 為頁碼占位符
doc.Split("拆分結(jié)果/頁面-{0}.pdf", 1)

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

運行后,每頁都會生成一個獨立的 PDF 文件,方便單獨管理或分發(fā)。

3. 按固定頁數(shù)間隔拆分

對于長文檔,按固定頁數(shù)間隔拆分可以將 PDF 分成多個小文件,例如每 20 頁生成一個文件。這在歸檔報告或教學資料時非常實用。

import os
from spire.pdf.common import *
from spire.pdf import *

def split_pdf_by_interval(input_pdf, output_folder, pages_per_file):
    """
    將 PDF 按固定頁數(shù)拆分為多個文件。
    :param input_pdf: 輸入 PDF 文件路徑
    :param output_folder: 輸出文件夾
    :param pages_per_file: 每個文件包含的頁數(shù)
    """
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    pdf = PdfDocument()
    pdf.LoadFromFile(input_pdf)
    total_pages = pdf.Pages.Count

    file_count = 0
    for start_idx in range(0, total_pages, pages_per_file):
        file_count += 1
        end_idx = min(start_idx + pages_per_file - 1, total_pages - 1)

        new_pdf = PdfDocument()
        new_pdf.InsertPageRange(pdf, start_idx, end_idx)

        output_path = os.path.join(output_folder, f"{start_idx+1}-{end_idx+1}頁.pdf")
        new_pdf.SaveToFile(output_path)
        new_pdf.Close()
        print(f"已生成文件:{output_path}")

    pdf.Close()
    print(f"PDF 已按每 {pages_per_file} 頁拆分完成,共生成 {file_count} 個文件")

4. 高級拆分場景

處理加密 PDF

Spire.PDF 支持受密碼保護的 PDF,只需在加載文件時提供密碼即可:

doc = PdfDocument()
doc.LoadFromFile("加密文檔.pdf", "密碼123")
# 后續(xù)可使用前述方法拆分

按書簽或內(nèi)容拆分

對于結(jié)構(gòu)化文檔(如教材、報告或合同),可以結(jié)合 PDF 的書簽或文本內(nèi)容進行智能拆分:

  • 遍歷 PDF 的書簽,獲取對應頁碼
  • 創(chuàng)建新文檔保存每個章節(jié)或條款
  • 重復操作,直到所有內(nèi)容拆分完成

這種方法能夠精確控制拆分位置,實現(xiàn)更高效的文檔管理。

總結(jié)

Python 提供了高效、安全、靈活的 PDF 拆分方式。通過 Spire.PDF for Python,可以完成從基礎(chǔ)拆分到高級自定義拆分的各種需求,包括處理加密文檔和按書簽拆分。腳本化操作不僅節(jié)省了大量手動操作時間,也確保了敏感數(shù)據(jù)的安全性。

到此這篇關(guān)于Python中高效拆分PDF文檔的多種方法指南的文章就介紹到這了,更多相關(guān)Python拆分PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python修復遙感影像條帶的兩種方式

    詳解Python修復遙感影像條帶的兩種方式

    這篇文章主要介紹了詳解Python修復遙感影像條帶的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Python調(diào)用騰訊API實現(xiàn)人臉身份證比對功能

    Python調(diào)用騰訊API實現(xiàn)人臉身份證比對功能

    這篇文章主要介紹了Python調(diào)用騰訊API進行人臉身份證比對,簡單介紹了調(diào)用騰訊云API步驟,通過完整代碼展示與結(jié)果,需要的朋友可以參考下
    2022-04-04
  • Python BautifulSoup 節(jié)點信息

    Python BautifulSoup 節(jié)點信息

    這篇文章主要介紹了Python BautifulSoup 節(jié)點信息,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python flask框架端口失效解決方案

    Python flask框架端口失效解決方案

    這篇文章主要介紹了Python flask框架端口失效解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python wordcloud庫安裝方法

    Python wordcloud庫安裝方法

    Wordcloud庫的基本使用非常簡單,只需要導入庫并調(diào)用WordCloud類即可,這篇文章主要介紹了Python wordcloud庫,需要的朋友可以參考下
    2024-01-01
  • 詳談python http長連接客戶端

    詳談python http長連接客戶端

    下面小編就為大家?guī)硪黄斦刾ython http長連接客戶端。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • python 使用正則表達式按照多個空格分割字符的實例

    python 使用正則表達式按照多個空格分割字符的實例

    今天小編就為大家分享一篇python 使用正則表達式按照多個空格分割字符的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python中如何使用Matplotlib庫繪制圖形

    Python中如何使用Matplotlib庫繪制圖形

    Matplotlib是一個Python的2D繪圖庫,通過Matplotlib開發(fā)者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等,這篇文章主要給大家介紹了Python中如何使用Matplotlib庫繪制圖形的相關(guān)資料
    2022-07-07
  • Pandas缺失值填充 df.fillna()的實現(xiàn)

    Pandas缺失值填充 df.fillna()的實現(xiàn)

    本文主要介紹了Pandas缺失值填充 df.fillna()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 在Tensorflow中實現(xiàn)梯度下降法更新參數(shù)值

    在Tensorflow中實現(xiàn)梯度下降法更新參數(shù)值

    今天小編就為大家分享一篇在Tensorflow中實現(xiàn)梯度下降法更新參數(shù)值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論