最後更新: 2025年1月29日

在本文中,我們將指導您如何使用 Python 處理 PDF 文件。為此,我們將使用 pypdf 庫。
使用 pypdf 庫,我們將演示如何在 Python 中執行以下操作:
- 從 PDF 中提取文本
- 旋轉 PDF 頁面
- 合併多個 PDF
- 將 PDF 拆分為單獨文件
- 向 PDF 頁面添加水印
注意:本文涵蓋了許多有價值的細節,因此隨時跳至您最感興趣的部分!內容組織便於導航,以便您可以快速專注於最相關的內容。

範例代碼
您可以從以下鏈接下載本文中使用的所有範例代碼。它包含代碼、輸入文件和輸出文件。
安裝 pypdf
要安裝 pypdf,只需在終端或命令提示符中運行以下命令:
pip install pypdf
注意:上述命令對大小寫敏感。
1. 使用 Python 從 PDF 文件中提取文本
代碼解釋
1. 創建 PDF 讀取器對象
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
將 PDF 文件加載到 讀取器對象中。- 這個對象允許訪問頁面及其內容。
2. 遍歷頁面
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
返回 PDF 中頁面的列表。enumerate(..., start=1)
為頁面分配從 1 開始的頁碼。
3. 列印提取的文本
print(f"Page {page_number}:")
print(page.extract_text())
print("-" * 50) # 分隔線以提高可讀性
page.extract_text()
從當前頁面提取文本內容。- 腳本列印提取的文本以及頁碼。
"-" * 50
列印分隔線(--------------------------------------------------
),以提高可讀性。
代碼使用的輸入 PDF 文件
- 輸入文件: 下載鏈接
代碼的輸出
2. 使用 Python 旋轉 PDF 頁面
代碼解釋
代碼基本上將第一頁旋轉90° 順時針,並保存修改後的 PDF 而不影響其他頁面。
1. 導入所需的類
from pypdf import PdfReader, PdfWriter
PdfReader
: 用於讀取輸入 PDF。PdfWriter
: 用於創建具有更改的新 PDF。
2. 定義輸入和輸出文件路徑
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- 腳本從
input.pdf
讀取並將修改後的文件保存為rotated_output.pdf
。
3. 讀取 PDF 並創建寫入器對象
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
加載現有的 PDF。writer
用於存儲被修改的頁面。
4. 將第一頁旋轉 90 度
page = reader.pages[0]
page.rotate(90) # 順時針旋轉 90 度
writer.add_page(page)
- 提取第 1 頁,將其旋轉90 度,並將其添加到新 PDF。
5. 添加其餘頁面而不進行更改
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- 遍歷其餘頁面並按原樣添加它們。
6. 保存新 PDF
with open(output_pdf, "wb") as file:
writer.write(file)
- 以寫入二進制模式打開
rotated_output.pdf
並保存新 PDF。
7. 列印確認
print(f"Rotated page saved to {output_pdf}")
- 顯示成功消息。
代碼中使用的輸入 PDF 及其旋轉輸出
截圖
3. 使用 Python 合併 PDF 文件
此 Python 腳本演示如何使用 PyPDF 庫將目錄中的多個 PDF 文件合併為一個 PDF。
代碼解釋
- 此腳本自動合併指定目錄 (
pdfs-to-merge
) 中的所有 PDF 文件,生成單個輸出文件 (merged_output.pdf
)。 - 它確保輸出目錄存在,並按文件的排序順序添加每個 PDF 的頁面。
- 最終的合併文件將輸出到
output-dir
子目錄中。
代碼解析
1. 導入庫
import os
from pypdf import PdfReader, PdfWriter
os
: 用於與文件系統交互,例如讀取目錄和管理文件路徑。PdfReader
: 用於讀取 PDF 文件的內容。PdfWriter
: 用於創建和寫入新 PDF 文件。
2. 定義目錄和輸出文件
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: 指定存儲 PDF 文件的文件夾。output_file
: 定義合併 PDF 的輸出路徑和名稱。
3. 如果不存在則創建輸出目錄
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- 確保輸出目錄存在,如果不存在則創建它。
4. 創建 PdfWriter 對象
writer = PdfWriter()
writer
用於收集和組合來自 PDF 的所有頁面。
5. 遍歷目錄中的所有 PDF 文件
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Adding: {file_name}")
- 此循環遍歷指定目錄中的所有文件,檢查具有
.pdf
擴展名的文件。使用sorted()
以字母順序處理它們。
6. 讀取每個 PDF 並將頁面附加到寫入器
reader = PdfReader(file_path)
writer.append(reader)
- 對於每個 PDF,
PdfReader
讀取文件,然後該 PDF 的所有頁面都附加到writer
。
7. 寫入合併的 PDF 到輸出文件
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- 收集所有頁面後,
writer.write()
將合併的 PDF 寫入指定的輸出路徑。
8. 列印確認
print(f"Merged PDF saved as: {output_path}")
- 列印成功消息確認保存的合併 PDF 的位置。
代碼中使用的輸入 PDF 文件和合併輸出 PDF
4. 使用 Python 拆分 PDF
代碼解釋
上面的 Python 腳本使用 PyPDF 庫將 PDF 拆分為單獨的頁面。它首先確保輸出目錄存在,然後讀取輸入 PDF 文件。腳本遍歷每頁,創建一個新的 PdfWriter 對象,並將每頁保存為單獨的 PDF 文件。輸出文件按順序命名(例如,page_1.pdf, page_2.pdf)並存儲在 output-dir
文件夾中。最後,它為每個創建的文件列印確認消息並通知過程完成。
代碼中使用的輸入 PDF 和拆分的輸出文件
5. 使用 Python 向 PDF 添加水印
您可以使用 PyPDF 庫通過將水印 PDF 叠加到現有 PDF 上來添加水印。確保水印 PDF 僅具有一頁,以便其正確應用於主 PDF 的每一頁。
代碼解釋
上述 Python 腳本讀取輸入 PDF,提取一頁的水印 PDF,將水印覆蓋在輸入 PDF 的每一頁上,並保存最終的加水印 PDF。
代碼解析
以下是每個部分的簡要解釋:
1. 導入必要的類
from pypdf import PdfReader, PdfWriter
PdfReader
用於讀取現有的 PDF。PdfWriter
用於創建和寫入新 PDF。
2. 定義文件路徑
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: 將添加水印的原始 PDF。watermark_pdf
: 作為水印的獨立的單頁 PDF。output_pdf
: 將包含加水印的頁面的輸出文件。
3. 讀取 PDF
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: 讀取輸入的 PDF。watermark
: 讀取水印 PDF。
4. 創建寫入器對象
writer = PdfWriter()
- 這將用於創建最終的加水印 PDF。
5. 提取水印頁
watermark_page = watermark.pages[0]
- 假定水印 PDF 只有一頁,將用於疊加到所有頁面上。
6. 遍歷輸入 PDF 頁面並合併水印
for page in reader.pages:
# 合併水印與當前頁面
page.merge_page(watermark_page)
# 將合併後的頁面添加到寫入器
writer.add_page(page)
- 遍歷
input_pdf
的每一頁。 merge_page(watermark_page)
在當前頁面上疊加水印。- 將修改後的頁面添加到
writer
。
7. 保存加水印的 PDF
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- 將修改後的頁面寫入到一個新的 PDF 文件中。
8. 列印確認
print(f"Watermarked PDF saved as: {output_pdf}")
- 列印輸出文件的路徑以作為確認。
輸入的 PDF、水印 PDF 和輸出的加水印 PDF
截圖
結論
在本指南中,我們探索了 Python 中的基本 PDF 操作,包括提取文本、旋轉頁面、合併、拆分和添加水印。藉助這些技能,您現在可以構建自己的 PDF 管理器並高效地自動化各種 PDF 任務。