當你需要在 Python 中操作 PDF 而不需要大量外部依賴時,pypdf 是首選解決方案。這個純 Python 函式庫提供了全面的 PDF 操作能力,包括分割、合併、裁剪、旋轉、加密和文字提取,全部無需任何原生程式碼或系統函式庫。
Pypdf 作為標準的 Python PDF 函式庫已有超過十年的歷史。它經歷了多個主要版本的演進,現在提供了一個乾淨、現代的 API,易於使用同時在底層又非常強大。該函式庫直接解析 PDF 規範,因此可以存取文件結構中的每個元素。
核心能力
| 功能 | 描述 | API |
|---|---|---|
| 頁面操作 | 合併、分割、旋轉、縮放、裁剪 | PdfWriter + PdfReader |
| 元資料 | 讀取和寫入文件元資料 | metadata 屬性 |
| 加密 | PDF 密碼保護和解密 | encrypt() / decrypt() |
| 文字提取 | 從頁面中提取文字,附版面選項 | extract_text() |
| 表格填寫 | 填寫 PDF AcroForm 欄位 | update_page_form_field_values() |
文件處理流程
flowchart LR
A[輸入 PDF] --> B[PdfReader]
B --> C{操作類型}
C -->|合併| D[PdfWriter.append]
C -->|分割| E[每頁 PdfWriter]
C -->|變換| F[頁面變換]
C -->|提取| G[text_extraction]
D --> H[PdfWriter]
E --> H
F --> H
G --> H
H --> I[write() 至檔案]工作流程圍繞著用於輸入的 PdfReader 和用於輸出的 PdfWriter。頁面被讀取、操作並組裝成新文件。文字提取繞過 Writer 路徑,直接回傳字串。
函式庫比較
| 功能 | pypdf | PyMuPDF | pdfminer.six | pdfplumber |
|---|---|---|---|---|
| 純 Python | 是 | 否(C 綁定) | 是 | 是 |
| 安裝 | pip install | 複雜原生依賴 | pip install | pip install |
| 頁面操作 | 完整 | 有限 | 無 | 無 |
| 加密 | 完整 | 完整 | 部分 | 無 |
| 效能 | 中等 | 非常快 | 慢 | 中等 |
純 Python 的重要性
pypdf 的純 Python 特性使其非常適合無伺服器環境和 CI/CD 管線,在這些環境中安裝原生函式庫很困難。它在 Python 支援的每個平台上都能運作,從 Raspberry Pi 到大型主機,無需編譯步驟。對於依賴管理至關重要的部署場景,pypdf 的零原生依賴方法是一個顯著優勢。
如需更多資訊,請造訪 pypdf GitHub 儲存庫 和 pypdf 文件。
常見問題
Q:pypdf 支援哪些 Python 版本? A:pypdf 支援 Python 3.8 及以上版本,包括 Python 3.13。
Q:pypdf 可以從 PDF 中提取圖像嗎? A:它有基本的圖像提取功能;對於進階圖像處理,建議使用 PyMuPDF。
Q:pypdf 是執行緒安全的嗎? A:是的,PdfReader 實例對於讀取操作是執行緒安全的。
Q:pypdf 能處理 PDF/A 文件嗎? A:它可以讀取 PDF/A 文件,但不會驗證或建立符合 PDF/A 的輸出。
Q:pypdf 與 PyPDF2/PyPDF3/PyPDF4 相比如何? A:pypdf 是 PyPDF2 的直接繼承者,也是原始 py-pdf 專案的主動維護版本。
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!