环境
- python 3.8
- PyPDF2 2.1.0
前言
PyPDF2
是一个开源的、免费的、纯 python
语言编写的库,主要用来处理 pdf
文件,包括了常见的分离、合并、裁剪、转换、加密、解密等功能。
安装
使用 pip
安装,执行命令
pip install PyPDF2
使用示例
下面来看看几个常见的 pdf
文件操作示例
获取基本信息
主要是利用 PdfReader
from PyPDF2 import PdfReader
reader = PdfReader("test.pdf")
# 总页数
number_of_pages = len(reader.pages)
# 第一页
page = reader.pages[0]
text = page.extract_text()
合并
准备待合并的 pdf
文件统一放在文件夹 pdfs
下,如果有合并顺序要求,就将原文件按特定顺序命令,如 1.pdf
、2.pdf
import os
from PyPDF2 import PdfFileMerger
src_path = 'pdfs'
# 将待拼接的pdf文件以绝对路径的形式放在一个列表里
pdf_list = [f for f in os.listdir(src_path) if f.endswith('.pdf')]
pdf_list = [os.path.join(src_path, filename) for filename in pdf_list]
pdf_file_merger = PdfFileMerger()
for pdf in pdf_list:
pdf_file_merger.append(pdf, import_bookmarks=False)
pdf_file_merger.write("merged.pdf")
文件加密
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("test.pdf")
writer = PdfWriter()
# 拷贝每一页的内容
for page in reader.pages:
writer.add_page(page)
# 在新的pdf文件中添加密码
writer.encrypt("secret-password")
# 保存成新的pdf
with open("encrypted.pdf", "wb") as f:
writer.write(f)
执行代码后,打开生成的 encrypted.pdf
,会要求输入密码才能查看
文件解密
from PyPDF2 import PdfReader, PdfWriter
# 读取上面加密的pdf文件
reader = PdfReader("encrypted.pdf")
writer = PdfWriter()
# 解密
if reader.is_encrypted:
reader.decrypt("secret-password")
# 将每一页内容加到writer对象中
for page in reader.pages:
writer.add_page(page)
# 保存解密后的pdf
with open("decrypted.pdf", "wb") as f:
writer.write(f)
代码执行后,新生成的 decrypted.pdf
就不用输入密码了
添加水印
from PyPDF2 import PdfWriter, PdfReader
# 读取作为水印的pdf
watermark = PdfReader("watermark.pdf")
# 待加水印的pdf
reader = PdfReader("test.pdf")
page = reader.pages[0]
# watermark.pdf的第一页作为水印
page.merge_page(watermark.pages[0])
writer = PdfWriter()
writer.add_page(page)
# 保存成新的pdf
with open("output.pdf", "wb") as fp:
writer.write(fp)
最后,更详细的文档,可以参考官方的链接 https://pypdf2.readthedocs.io/en/latest/
Python实用模块专题
更多有用的 python
模块,请移步