4
Python实用模块(三十一)PyPDF2
source link: https://xugaoxiang.com/2022/06/11/python-module-31-pypdf2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
- 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
模块,请移步
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK