处理 PDF 最常用的 Python 库有以下几个:
PyPDF2
/ pypdf
(推荐 pypdf
)PyPDF2
是一个纯 Python 库,用于分割、合并、裁剪和转换 PDF 文件。它自 2022 年起已重命名为 pypdf
,并持续维护和更新。pypdf
是 PyPDF2
的继任者,修复了大量 bug 并增加了新功能。pdfplumber
pypdf
之上,专注于精确提取 PDF 中的文本、表格和图形信息。它能很好地处理表格,是数据提取的利器。pdfminer.six
pdfminer
的一个活跃分支,专注于从 PDF 中提取文本和布局信息。功能非常强大,适合复杂的文本分析。reportlab
reportlab
是最佳选择。pypdf
操作 PDFpython深色版本from pypdf import PdfReader
# 创建 PDF 读取器对象
reader = PdfReader("example.pdf")
# 获取页数
print(f"文档总页数: {len(reader.pages)}")
# 获取文档元数据
if reader.metadata:
print(f"作者: {reader.metadata.author}")
print(f"标题: {reader.metadata.title}")
print(f"创建日期: {reader.metadata.creation_date}")
# 提取第一页的文本
first_page = reader.pages[0]
text = first_page.extract_text()
print("第一页内容:")
print(text)
ZHIBO.76ZHIBO.CN18丨SOHU.CYDDW.CN42丨ZHIBO.04SZFK.COM78丨MAP.ZKAFX120.COM55
WAP.YUYOUKE.NET35丨WEIBO.XIANGHETL.COM25丨WEIBO.FMMITV.COM81丨FOOTBALL.0318SEO.COM52
WWW.PORTASTYL.COM24丨YES.NJZHONGTONG.COM37丨MOBI.SHOA01.COM26丨LIVE.ENDYEDU.COM10
24K.GZXZDZ.CN55丨MAP.NMFZTD.ORG.CN30丨QQ.QDSKYWGJJNG.COM69丨FREE.QQRJ.CN39
YUSHA168.COM75丨TJBD120.COM44丨TV.FJZB2.COM41丨ZHIBO.SHANTT.CN41
ONLINE.ZZZ-Z.CN85丨FOOTBALL.HASUNSOFT.COM42丨XGLXX.COM42丨SOHU.MINGPEI.NET69
BOLL.HBST123.COM30丨FREE.SHKYBZ.CN58丨CCTV.QZSYHB.CN58丨FOOTBALL.SANACE.COM.CN26
YES.HASUNSOFT.COM11丨SOHU.HNTGNETWORK.COM14丨VIP.CLQMW.COM15丨WAP.BTJZ.NET.CN74
LANQIU.CLQMW.COM33丨CCTV.ZQIPR.COM85丨FOOTBALL.ZQIPR.COM64丨ZHIHU.ZHENGXIANGJINSHU.COM29
VIP.DGBLJZ.COM73丨SINA.GSXZFWZX.COM63丨SHIJIEBEI.HENGHUASZ.COM72丨PRETTY.CHRONOPORTAL.CN83
LVYIN.SJZXHD.CN25丨SHARE.ZHENGXIANGJINSHU.COM97丨M.ZZKFJYZX.COM47丨OUGUAN.YUYOUKE.NET29
YES.XMJIUSHI.CN70丨PRETTY.KSSJ666.COM91丨WEIBO.CTDSBGG.COM11丨SWEET.HZSMC.COM77
python深色版本from pypdf import PdfMerger
merger = PdfMerger()
# 添加多个 PDF 文件
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
for pdf in pdf_files:
merger.append(pdf)
# 将合并后的结果写入新文件
merger.write("merged_output.pdf")
merger.close() # 记得关闭
python深色版本from pypdf import PdfReader, PdfWriter
reader = PdfReader("original.pdf")
writer = PdfWriter()
# 将前5页保存为一个新文件
for page_num in range(min(5, len(reader.pages))):
page = reader.pages[page_num]
writer.add_page(page)
with open("first_5_pages.pdf", "wb") as output_file:
writer.write(output_file)
python深色版本from pypdf import PdfReader, PdfWriter
reader = PdfReader("unencrypted.pdf")
writer = PdfWriter()
# 将所有页面添加到 writer
for page in reader.pages:
writer.add_page(page)
# 添加加密,设置用户密码和所有者密码
writer.encrypt(user_password="user123", owner_password="owner456")
with open("encrypted.pdf", "wb") as output_file:
writer.write(output_file)
python深色版本from pypdf import PdfReader, PdfWriter
reader = PdfReader("encrypted.pdf")
# 检查是否加密
if reader.is_encrypted:
# 提供密码进行解密
reader.decrypt("user123") # 或者 "owner456"
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
with open("decrypted.pdf", "wb") as output_file:
writer.write(output_file)
pdfplumber
提取表格python深色版本import pdfplumber
with pdfplumber.open("financial_report.pdf") as pdf:
# 假设表格在第一页
page = pdf.pages[0]
# 提取页面上的所有表格
tables = page.extract_tables()
# 遍历每个表格
for i, table in enumerate(tables):
print(f"表格 {i+1}:")
for row in table:
print(row) # 每行是一个列表
# 如果只想提取一个特定的表格,可以使用 extract_table()
# table = page.extract_table()
# 可视化表格边界(用于调试)
# im = page.to_image()
# im.draw_rects(page.extract_words()) # 画出单词边界
# im.show()
reportlab
创建 PDFpython深色版本from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
# 注册中文字体 (需要有字体文件)
# pdfmetrics.registerFont(TTFont('SimSun', 'simsun.ttc'))
# 创建画布
c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter
# 添加文本
c.setFont("Helvetica", 16)
c.drawString(100, height - 100, "Hello, this is a PDF generated by Python!")
# 添加更多文本
c.setFont("Helvetica", 12)
c.drawString(100, height - 130, "Using the reportlab library.")
# 保存
c.save()
print("PDF 已创建: hello.pdf")
pypdf
。pdfplumber
。pdfminer.six
。reportlab
。os.path
处理相对路径。try-except
处理异常。with
语句或手动 close()
)。pytesseract
+ 图像处理库)。pypdf
提取中文通常没问题,但 reportlab
生成中文需要手动注册中文字体。Python 操作 PDF 文件的能力非常强大。通过 pypdf
、pdfplumber
、reportlab
等库,你可以:
建议从 pypdf
开始,掌握基本的读取、合并、分割操作,然后根据需要学习 pdfplumber
进行表格提取,或学习 reportlab
来生成专业的 PDF 文档。动手实践是掌握这些技能的最佳方式!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。