1. 使用 PyPDF2 合併 PDF
為什麼要合併PDF檔案
首先,讓我們來了解為什麼需要合併PDF檔案。正所謂,「一個PDF好過十個!」。在工作環境中,你可能有報告、研究結果、技術文檔或簡報,這些都分開存為不同的檔案。一直在不同檔案間切換不僅麻煩,還有可能漏掉關鍵內容。透過將所有文件合併為一個文檔,你可以更方便地處理數據,並能創建一種更結構化的方法來分析和分發這些資訊。
此外,合併PDF檔案對於後續的檔案歸檔、生成統一的最終報告或合併多版本文件以跟踪更改也非常有用。總而言之,這功能用途非常多!
使用 PyPDF2 合併 PDF 的基礎
首先讓我們看看如何使用 PyPDF2 進行合併。我們將撰寫一個腳本,將多個PDF檔案合併為一個檔案。當然,程式碼會附上說明文字,讓你能理解每個步驟。
import PyPDF2
# 創建 PdfMerger 物件
pdf_merger = PyPDF2.PdfMerger()
# 我們想要合併的PDF文件清單
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# 將每個檔案添加到 PdfMerger 物件
for file in pdf_files:
pdf_merger.append(file)
# 將結果保存為新的PDF檔案
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# 關閉 PdfMerger 物件釋放資源
pdf_merger.close()
print(f"合併的PDF已創建: {output_filename}")
合併文檔的順序及結構
現在我們學會了如何合併PDF文件,接下來要考慮頁面的順序。請記住,PyPDF2 會按照你傳入 .append()
方法的文件順序添加頁面。因此,清單 pdf_files
的順序會直接影響最終文檔中的頁面順序。
2. 合併單個頁面
如果你不想合併整個文件,而是從多個文件中提取頁面來組成最終的文件,那麼你應該使用 PdfWriter
類,而不是 PdfMerger
。例如:
import PyPDF2
# 需要合併的PDF檔案清單
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# 創建 PdfWriter 物件來寫入合併的PDF
pdf_writer = PyPDF2.PdfWriter()
# 遍歷每個PDF檔案
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# 將每頁加入 PdfWriter
for page_num in range(len(pdf_reader.pages)):
# 這裡可以跳過你不想加入的頁面
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 保存合併的PDF
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
這段程式碼的工作原理?
-
創建檔案清單: 清單
pdf_files
包含需要合併的PDF文檔的路徑。 -
初始化 PdfWriter:
pdf_writer
用於創建新的PDF文件。 - 遍歷每個文件: 每個PDF文件以讀取模式打開。
-
添加頁面: 所有頁面依次使用
add_page()
方法加入到pdf_writer
。 -
保存結果: 在所有頁面添加完成後,新的PDF文件寫入至
merged_document.pdf
。
3. 新文檔的樣式化
添加書籤和目錄
如果合併後的文件過於龐大且難以導航,那麼書籤就可以派上用場了!PyPDF2 支援添加基本書籤來幫助文件導覽。讓我們為每個合併的文件添加書籤。
pdf_merger = PyPDF2.PdfMerger()
# 用於書籤的頁面索引
page_offset = 0
for file in pdf_files:
# 讀取當前文件
pdf_reader = PyPDF2.PdfReader(file)
# 將文件添加到 PdfMerger
pdf_merger.append(file)
# 為文件名稱添加書籤
pdf_merger.add_bookmark(file, page_offset)
# 更新頁面偏移量
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
這麼做可以幫助你更輕鬆地掌控文件,而不會在PDF海洋中迷失。
更新合併文件的元數據
合併後,可以為文檔添加或更新元數據,例如作者、標題和關鍵字。
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 添加元數據
pdf_writer.add_metadata({
"/Title": "合併文檔",
"/Author": "Ivan Ivanov",
"/Subject": "銷售報告"
})
# 保存合併文件
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
這段程式碼會添加元數據,幫助識別和結構化文檔。
GO TO FULL VERSION