欢迎访问本站,希望站内信息可以帮助到您!感兴趣的,可以加入我的知识星球,一对一解答!

Python实用模块(三十一)PyPDF2

实用模块 迷途小书童 626℃ 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.pdf2.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 模块,请移步

https://xugaoxiang.com/category/python/modules/

喜欢 (0)

您必须 登录 才能发表评论!

退出移动版