Python使用PyPDF進(jìn)行PDF操作的代碼示例
1. 為什么選擇 PyPDF?
PyPDF 是一個(gè)輕量級(jí)且功能強(qiáng)大的 PDF 操作庫,支持以下功能:
- 合并和拆分 PDF 文件
- 提取文本和元信息
- 添加或修改文檔的元數(shù)據(jù)
- 加密和解密 PDF
- 自定義 PDF 頁面旋轉(zhuǎn)或裁剪
以下是一些實(shí)戰(zhàn)場景的詳細(xì)實(shí)現(xiàn)。
2. 安裝 PyPDF
首先,需要安裝 PyPDF 庫??梢允褂?pip:
pip install pypdf
確保安裝的是最新版,以獲得最新功能和性能改進(jìn)。
3. PDF 文件的合并與拆分
3.1 合并 PDF 文件
合并多個(gè) PDF 文件在生成報(bào)告或整理文檔時(shí)非常有用。
from pypdf import PdfMerger
# 初始化合并器
merger = PdfMerger()
# 添加需要合并的 PDF 文件
merger.append("file1.pdf")
merger.append("file2.pdf")
# 保存合并后的文件
merger.write("merged.pdf")
merger.close()
print("PDF 合并完成!")
3.2 拆分 PDF 文件
將一個(gè) PDF 文件拆分為多個(gè)獨(dú)立的頁面文件。
from pypdf import PdfReader, PdfWriter
# 讀取 PDF 文件
reader = PdfReader("input.pdf")
# 拆分每一頁
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output_file:
writer.write(output_file)
print("PDF 拆分完成!")
4. 提取 PDF 文本
提取 PDF 文件中的文本內(nèi)容,可以用于數(shù)據(jù)分析或自動(dòng)化處理。
from pypdf import PdfReader
# 讀取 PDF 文件
reader = PdfReader("input.pdf")
# 提取每頁的文本
for page in reader.pages:
print(page.extract_text())
注意事項(xiàng):
- 文本提取的效果取決于 PDF 的結(jié)構(gòu)。如果 PDF 中的文本是以圖像形式存儲(chǔ)的,則無法直接提取文本。
5. 修改 PDF 元信息
修改 PDF 的元數(shù)據(jù),例如標(biāo)題、作者等。
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
# 復(fù)制所有頁面到新 PDF
writer.add_pages(reader.pages)
# 修改元信息
writer.metadata = {
"/Title": "新的標(biāo)題",
"/Author": "作者名",
"/Subject": "主題描述"
}
with open("output.pdf", "wb") as output_file:
writer.write(output_file)
print("元信息修改完成!")
6. PDF 加密與解密
6.1 加密 PDF
為 PDF 文件添加密碼保護(hù)。
from pypdf import PdfWriter
writer = PdfWriter()
writer.append("input.pdf")
# 設(shè)置密碼
writer.encrypt(user_password="user123", owner_password="owner123")
with open("encrypted.pdf", "wb") as output_file:
writer.write(output_file)
print("PDF 加密完成!")
6.2 解密 PDF
解密受密碼保護(hù)的 PDF 文件。
from pypdf import PdfReader
reader = PdfReader("encrypted.pdf")
# 提供密碼解密
reader.decrypt("user123")
for page in reader.pages:
print(page.extract_text())
7. 頁面旋轉(zhuǎn)與裁剪
7.1 旋轉(zhuǎn)頁面
旋轉(zhuǎn) PDF 的頁面,例如將橫向頁面轉(zhuǎn)為縱向。
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
# 旋轉(zhuǎn)每一頁
for page in reader.pages:
page.rotate(90) # 順時(shí)針旋轉(zhuǎn) 90 度
writer.add_page(page)
with open("rotated.pdf", "wb") as output_file:
writer.write(output_file)
print("頁面旋轉(zhuǎn)完成!")
7.2 裁剪頁面
裁剪頁面邊框以去掉不必要的內(nèi)容。
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
for page in reader.pages:
# 設(shè)置裁剪框 (左, 下, 右, 上)
page.mediabox.lower_left = (50, 50)
page.mediabox.upper_right = (500, 700)
writer.add_page(page)
with open("cropped.pdf", "wb") as output_file:
writer.write(output_file)
print("頁面裁剪完成!")
8. 實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié)
- 處理異常:在實(shí)際操作中,確保捕獲文件讀寫或解析過程中的異常,例如文件不存在或解密失敗。
- 測試 PDF 文件:由于 PDF 文件格式的多樣性,在批量處理前需要先對(duì)樣本文件進(jìn)行測試。
- 性能優(yōu)化:對(duì)于大文件,使用分批加載的方式處理。
- 安全性:避免在代碼中硬編碼敏感信息,例如密碼。
到此這篇關(guān)于Python使用PyPDF進(jìn)行PDF操作的代碼示例的文章就介紹到這了,更多相關(guān)Python PyPDF進(jìn)行PDF操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Transformer導(dǎo)論之Bert預(yù)訓(xùn)練語言解析
這篇文章主要為大家介紹了Transformer導(dǎo)論之Bert預(yù)訓(xùn)練語言解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
django ajax發(fā)送post請(qǐng)求的兩種方法
這篇文章主要介紹了django ajax發(fā)送post請(qǐng)求的兩種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Python中實(shí)現(xiàn)最小二乘法思路及實(shí)現(xiàn)代碼
這篇文章主要介紹了Python中實(shí)現(xiàn)最小二乘法思路及實(shí)現(xiàn)代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

