【Python】PyPDF2库拆分、合并、整理和加解密PDF文件

本文介绍了如何使用PyPDF2库进行PDF文件的拆分、合并、页面顺序调整以及加解密操作,包括安装方法、GitHub链接和实际代码示例。
摘要由CSDN通过智能技术生成

PyPDF2 is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. PyPDF2 can retrieve text and metadata from PDFs as well.

PyPDF2是一个++免费的、开源的++纯python PDF库,能够拆分、合并、裁剪和转换PDF文件的页面。它还可以为PDF文件添加自定义数据、查看选项和密码。PyPDF2也可以从pdf中检索文本和元数据。

一、安装方法和GitHub地址

安装方法:

> pip install PyPDF2

GitHub地址:

https://github.com/py-pdf/pypdf

二、实例

以下面两个文件为示例,进行几个简单的编辑操作。

file1.pdffile2.pdf
在这里插入图片描述在这里插入图片描述

2.1 拆分

实例目的:

file1.pdf的第2和第4页拆分为一个单独的文件。

file1.pdf拆分output.pdf
在这里插入图片描述在这里插入图片描述在这里插入图片描述

为了方便输入文件地址,可以将要处理的文件与Python程序文件放到同一文件夹下。
在这里插入图片描述

实现代码:

# main.py
# 引入PdfWriter类
from PyPDF2 import PdfWriter

# 新建实例
pdfWriter = PdfWriter()

# 引入PDF文件页面
# - fileobj为PDF文件,同一文件夹下可以直接使用文件名
# - pages为页面编号,从0记起,因此这里是1和3,对应页码2和4
pdfWriter.append(fileobj='file1.pdf', pages=[1,3])

# 由于fileobj是第一个输入参数,上行也可以简写如下:
# pdfWriter.append('file1.pdf', pages=[1,3])

# 保存文件
pdfWriter.write('output.pdf')
# 清除缓存
pdfWriter.close()

2.2 合并

实例目的:

file1.pdf的前3页和file2.pdf的前3页合并为一个单独的文件。

file1.pdffile2.pdf合并output.pdf
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

实现代码1:

from PyPDF2 import PdfWriter

pdfWriter = PdfWriter()
pdfWriter.append('file1.pdf', pages=[0,1,2])

# 按页面对应编号将另一个文件的页面也添加到writer实例中
pdfWriter.append('file2.pdf', pages=[3,4,5])

pdfWriter.write('output.pdf')
pdfWriter.close()

PageRange类

对于连续多个页面可以采用PageRange替代 [0,1,2] 的写法。

写法含义写法含义
:所有页-1最后1页
2第3页:-1除了最后1页
0:3前3页-2倒数第2页
:3前3页-2:最后2页
5:第6页往后-3:-1倒数第3、第2和最后1页
::2第1 3 5 … 页3:0:-1第4 3 2页
1:10:2第2 4 6 8 10页2::-1第3 2 1页
::-1所有页反序

实现代码2:

from PyPDF2 import PdfWriter

pdfWriter = PdfWriter()

# 修改如下:
pdfWriter.append('file1.pdf', pages=PageRange(':3'))
pdfWriter.append('file2.pdf', pages=PageRange('-3:'))

pdfWriter.write('output.pdf')
pdfWriter.close()

2.3 整理

即修改页面顺序。

file1.pdf整理output.pdf
在这里插入图片描述在这里插入图片描述在这里插入图片描述

实例目的:

file1.pdf的页面顺序进行调整。

实现代码:

from PyPDF2 import PdfWriter

pdfWriter = PdfWriter()

# 按顺序输入对应的页面编号
pdfWriter.append('file1.pdf', pages=[1,3,2,0,5,4])

pdfWriter.write('output.pdf')
pdfWriter.close()

2.4 加解密(已知密码)

实例目的:

file1.pdf进行加密,对加密后的文件进行解密。

实现代码:

from PyPDF2 import PdfWriter, PdfReader

pdfWriter1 = PdfWriter()
pdfWriter1.append('file1.pdf')

# 加密
pdfWriter1.encrypt('123456')
pdfWriter1.write('lock.pdf')
pdfWriter1.close()

pdfReader = PdfReader('lock.pdf')

# 解密
if pdfReader.is_encrypted:
    pdfReader.decrypt('123456')

pdfWriter2 = PdfWriter()
pdfWriter2.append(pdfReader)
pdfWriter2.write('unlock.pdf')
pdfWriter2.close()
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值