基于python对pdf文件进行加密等操作

利用python对pdf文件进行操作

读取pdf-源码

复制代码
import PyPDF2
# 读取pdf格式的文件
reader = PyPDF2.PdfFileReader('示例文件/aaa.pdf')
print(reader)

# 读取指定页面的文件
page = reader.getPage(0)
# 输出当前页面的文本数据
print(page.extractText())

读取pdf-源码解析

这段代码使用了PyPDF2库来读取和处理PDF文件。以下是对这段代码的详细分析:

1. 导入库

复制代码
import PyPDF2

这行代码导入了PyPDF2库,该库提供了处理PDF文件的功能。

2. 读取PDF文件

复制代码
reader = PyPDF2.PdfFileReader('示例文件/aaa.pdf')
print(reader)
  • PyPDF2.PdfFileReader('示例文件/aaa.pdf'):创建一个PdfFileReader对象,用于读取指定的PDF文件。这里的文件路径是'示例文件/aaa.pdf'

  • print(reader):打印reader对象。这个对象包含了PDF文件的元数据和页面信息。

3. 读取指定页面

复制代码
page = reader.getPage(0)
  • reader.getPage(0):从PDF文件中获取第一页(索引为0)。getPage方法返回一个PageObject对象,表示PDF文件中的一页。

4. 提取并输出文本数据

复制代码
print(page.extractText())
  • page.extractText():从当前页面(page对象)中提取文本数据。这个方法会尝试解析页面中的文本并返回一个字符串。

  • print(page.extractText()):打印提取到的文本数据。

代码执行流程

  1. 导入库 :导入PyPDF2库。

  2. 创建读取器对象 :使用PdfFileReader读取指定的PDF文件。

  3. 获取页面对象 :使用getPage方法获取PDF文件的第一页。

  4. 提取文本 :使用extractText方法从页面对象中提取文本数据。

  5. 输出文本:打印提取到的文本数据。

注意事项

  • 确保PDF文件路径正确,并且文件存在。

  • PyPDF2库可能无法完美提取所有PDF文件中的文本,特别是那些包含复杂格式或图像的PDF文件。

  • 如果PDF文件受密码保护,需要先解密文件才能读取内容。

示例输出

假设PDF文件'示例文件/aaa.pdf'的第一页包含文本"Hello, World!",那么代码的输出将是:

复制代码
<PyPDF2.pdf.PageObject object at 0x...>
Hello, World!

其中<PyPDF2.pdf.PageObject object at 0x...>PageObject对象的表示,后面的文本是提取到的内容。

通过这段代码,你可以读取PDF文件的指定页面并提取其中的文本内容。

旋转和创建空白pdf-源码

复制代码
import PyPDF2

# 创建读取pdf文件的对象
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')
# 创建写入pdf文件的对象
writer = PyPDF2.PdfFileWriter()
# print(reader,writer)

# 获取pdf文件中所有页码
# print(reader.numPages)

# 对pdf文件中的所有页码进行遍历
for page_num in range(reader.numPages):
    # print(page_num)
    # 获取当前页面对象
    current_page = reader.getPage(page_num)
    # 若是奇数页顺时针旋转90°
    if page_num % 2 == 0:
        current_page.rotateClockwise(90)
    else:
        # 若是奇数页逆时针旋转90°
        current_page.rotateCounterClockwise(90)
    writer.addPage(current_page)

# 添加空白页,并且旋转90°
page = writer.addBlankPage()
page.rotateClockwise(90)

# 通过writer对象里面的write方法,将pdf文件做的调整保存到新的文件中
with open(r'示例文件/旋转和创建空白pdf文件.pdf', 'wb') as file:
    writer.write(file)

旋转和创建空白pdf-源码解析

这段代码使用了PyPDF2库来读取一个PDF文件,对每一页进行旋转操作,并添加一个空白页,最后将修改后的内容保存到一个新的PDF文件中。以下是对这段代码的详细解析:

1. 导入库

复制代码
import PyPDF2

这行代码导入了PyPDF2库,该库提供了处理PDF文件的功能。

2. 创建读取和写入PDF文件的对象

复制代码
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')
writer = PyPDF2.PdfFileWriter()
  • reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf'):创建一个PdfFileReader对象,用于读取指定的PDF文件。这里的文件路径是'示例文件/aaa.pdf'

  • writer = PyPDF2.PdfFileWriter():创建一个PdfFileWriter对象,用于写入新的PDF文件。

3. 获取PDF文件中所有页码

复制代码
num_pages = reader.numPages
  • reader.numPages:获取PDF文件中的总页数。

4. 对PDF文件中的所有页码进行遍历

复制代码
for page_num in range(num_pages):
    current_page = reader.getPage(page_num)
    if page_num % 2 == 0:
        current_page.rotateClockwise(90)
    else:
        current_page.rotateCounterClockwise(90)
    writer.addPage(current_page)
  • for page_num in range(num_pages):遍历PDF文件中的每一页。

  • current_page = reader.getPage(page_num):获取当前页码对应的页面对象。

  • if page_num % 2 == 0:判断当前页码是否为偶数。

    • current_page.rotateClockwise(90):如果是偶数页,顺时针旋转90度。

    • current_page.rotateCounterClockwise(90):如果是奇数页,逆时针旋转90度。

  • writer.addPage(current_page):将旋转后的页面添加到writer对象中。

5. 添加空白页并旋转

复制代码
page = writer.addBlankPage()
page.rotateClockwise(90)
  • page = writer.addBlankPage():在writer对象中添加一个空白页。

  • page.rotateClockwise(90):将空白页顺时针旋转90度。

6. 保存修改后的PDF文件

复制代码
with open(r'示例文件/旋转和创建空白pdf文件.pdf', 'wb') as file:
    writer.write(file)
  • with open(r'示例文件/旋转和创建空白pdf文件.pdf', 'wb') as file:以二进制写模式打开一个新文件,用于保存修改后的PDF文件。

  • writer.write(file):将writer对象中的内容写入到新文件中。

代码执行流程

  1. 导入库 :导入PyPDF2库。

  2. 创建读取器和写入器对象:分别创建用于读取和写入PDF文件的对象。

  3. 获取总页数:获取PDF文件中的总页数。

  4. 遍历每一页:对每一页进行旋转操作,并将旋转后的页面添加到写入器对象中。

  5. 添加空白页并旋转:在写入器对象中添加一个空白页,并将其旋转90度。

  6. 保存文件:将修改后的内容保存到一个新的PDF文件中。

示例输出

假设原始PDF文件'示例文件/aaa.pdf'有3页,经过上述代码处理后,将会生成一个新的PDF文件'示例文件/旋转和创建空白pdf文件.pdf',其中:

  • 第1页(原第1页)顺时针旋转90度。

  • 第2页(原第2页)逆时针旋转90度。

  • 第3页(原第3页)顺时针旋转90度。

  • 添加了一个空白页,并且该空白页顺时针旋转90度。

通过这段代码,你可以对PDF文件的每一页进行旋转操作,并添加一个空白页,最后将修改后的内容保存到一个新的PDF文件中。

对pdf文件加密-源码

复制代码
import PyPDF2

# 创建读取pdf文件对象
reader = PyPDF2.PdfFileReader('示例文件/旋转和创建空白pdf文件.pdf')

# 创建写入pdf文件的对象
writer = PyPDF2.PdfFileWriter()

for page_num in range(reader.numPages):
    # 将原文的每一页追加到writer对象中
    writer.addPage(reader.getPage(page_num))

# 给writer对象设置密码
writer.encrypt("123456")
# 将加密后的文件写入到新文件中
with open(r'示例文件/旋转和创建空白pdf文件_加密.pdf', 'wb') as file:
    writer.write(file)

对pdf文件加密-源码解析

这段代码使用了PyPDF2库来读取一个已有的PDF文件,将其内容复制到一个新的PDF文件中,并给新的PDF文件设置密码进行加密,最后将加密后的文件保存到新的文件中。以下是对这段代码的详细解析:

1. 导入库

复制代码
import PyPDF2

这行代码导入了PyPDF2库,该库提供了处理PDF文件的功能。

2. 创建读取PDF文件对象

复制代码
reader = PyPDF2.PdfFileReader('示例文件/旋转和创建空白pdf文件.pdf')
  • reader = PyPDF2.PdfFileReader('示例文件/旋转和创建空白pdf文件.pdf'):创建一个PdfFileReader对象,用于读取指定的PDF文件。这里的文件路径是'示例文件/旋转和创建空白pdf文件.pdf'

3. 创建写入PDF文件的对象

复制代码
writer = PyPDF2.PdfFileWriter()
  • writer = PyPDF2.PdfFileWriter():创建一个PdfFileWriter对象,用于写入新的PDF文件。

4. 遍历原文的每一页并追加到writer对象中

复制代码
for page_num in range(reader.numPages):
    writer.addPage(reader.getPage(page_num))
  • for page_num in range(reader.numPages):遍历PDF文件中的每一页。

  • writer.addPage(reader.getPage(page_num)):将当前页码对应的页面对象添加到writer对象中。

5. 给writer对象设置密码

复制代码
writer.encrypt("123456")
  • writer.encrypt("123456"):给writer对象设置密码,密码为"123456"。加密后的PDF文件需要使用这个密码才能打开。

6. 将加密后的文件写入到新文件中

复制代码
with open(r'示例文件/旋转和创建空白pdf文件_加密.pdf', 'wb') as file:
    writer.write(file)
  • with open(r'示例文件/旋转和创建空白pdf文件_加密.pdf', 'wb') as file:以二进制写模式打开一个新文件,用于保存加密后的PDF文件。

  • writer.write(file):将writer对象中的内容写入到新文件中。

代码执行流程

  1. 导入库 :导入PyPDF2库。

  2. 创建读取器对象:创建用于读取PDF文件的对象。

  3. 创建写入器对象:创建用于写入新的PDF文件的对象。

  4. 遍历每一页:将原文的每一页追加到写入器对象中。

  5. 设置密码:给写入器对象设置密码。

  6. 保存文件:将加密后的内容保存到一个新的PDF文件中。

示例输出

假设原始PDF文件'示例文件/旋转和创建空白pdf文件.pdf'有3页,经过上述代码处理后,将会生成一个新的PDF文件'示例文件/旋转和创建空白pdf文件_加密.pdf',其中:

  • 内容与原始PDF文件相同。

  • 文件被加密,需要使用密码"123456"才能打开。

通过这段代码,你可以读取一个PDF文件的内容,将其复制到一个新的PDF文件中,并给新的PDF文件设置密码进行加密,最后将加密后的文件保存到新的文件中。

对pdf文件添加水印-源码

复制代码
import PyPDF2

# 读取源文件
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')

# 读取水印文件
water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf')

# 写入pdf文件对象
writer = PyPDF2.PdfFileWriter()

# 获取水印页
water_page = water.getPage(0)

# 通过循环给原文件添加水印
for page_num in range(reader.numPages):
    # 获取当前页对象
    current_page = reader.getPage(page_num)
    # 将源文件的每一页与水印页合并
    current_page.mergePage(water_page)
    writer.addPage(current_page)

# 将添加完水印页的文件写入到新文件当中
with open(r'示例文件/aaa.pdf','wb') as file:
    writer.write(file)

对pdf文件添加水印-源码解析

这段代码使用了PyPDF2库来读取一个源PDF文件和一个水印PDF文件,然后将水印添加到源文件的每一页,最后将添加完水印的文件保存到一个新的文件中。以下是对这段代码的详细解析:

1. 导入库

复制代码
import PyPDF2

这行代码导入了PyPDF2库,该库提供了处理PDF文件的功能。

2. 读取源文件和水印文件

复制代码
reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf')
water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf')
  • reader = PyPDF2.PdfFileReader(r'示例文件/aaa.pdf'):创建一个PdfFileReader对象,用于读取源PDF文件。这里的文件路径是'示例文件/aaa.pdf'

  • water = PyPDF2.PdfFileReader(r'示例文件/watermark.pdf'):创建一个PdfFileReader对象,用于读取水印PDF文件。这里的文件路径是'示例文件/watermark.pdf'

3. 创建写入PDF文件的对象

复制代码
writer = PyPDF2.PdfFileWriter()
  • writer = PyPDF2.PdfFileWriter():创建一个PdfFileWriter对象,用于写入新的PDF文件。

4. 获取水印页

复制代码
water_page = water.getPage(0)
  • water_page = water.getPage(0):获取水印PDF文件的第一页(索引为0),作为水印页。

5. 通过循环给原文件添加水印

复制代码
for page_num in range(reader.numPages):
    current_page = reader.getPage(page_num)
    current_page.mergePage(water_page)
    writer.addPage(current_page)
  • for page_num in range(reader.num页面):遍历源PDF文件中的每一页。

  • current_page = reader.getPage(page_num):获取当前页码对应的页面对象。

  • current_page.mergePage(water_page):将水印页合并到当前页上。

  • writer.addPage(current_page):将合并了水印的当前页添加到writer对象中。

6. 将添加完水印页的文件写入到新文件当中

复制代码
with open(r'示例文件/aaa.pdf','wb') as file:
    writer.write(file)
  • with open(r'示例文件/aaa.pdf','wb') as file:以二进制写模式打开一个新文件,用于保存添加完水印的PDF文件。

  • writer.write(file):将writer对象中的内容写入到新文件中。

代码执行流程

  1. 导入库 :导入PyPDF2库。

  2. 读取源文件和水印文件:分别创建用于读取源PDF文件和水印PDF文件的对象。

  3. 创建写入器对象:创建用于写入新的PDF文件的对象。

  4. 获取水印页:获取水印PDF文件的第一页。

  5. 遍历每一页并添加水印:将水印页合并到源PDF文件的每一页上,并将合并后的页面添加到写入器对象中。

  6. 保存文件:将添加完水印的文件保存到一个新的文件中。

示例输出

假设源PDF文件'示例文件/aaa.pdf'有3页,水印PDF文件'示例文件/watermark.pdf'有1页,经过上述代码处理后,将会生成一个新的PDF文件'示例文件/aaa.pdf',其中:

  • 每一页都包含了水印。

  • 水印的位置和大小取决于水印页的内容和源页的大小。

通过这段代码,你可以读取一个源PDF文件和一个水印PDF文件,将水印添加到源文件的每一页,最后将添加完水印的文件保存到一个新的文件中。

相关推荐
yinuo2 小时前
前端跨页面通讯终极指南⑥:SharedWorker 用法全解析
前端
workflower5 小时前
时序数据获取事件
开发语言·人工智能·python·深度学习·机器学习·结对编程
CoderYanger5 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
C++业余爱好者6 小时前
Java 提供了8种基本数据类型及封装类型介绍
java·开发语言·python
想用offer打牌6 小时前
RocketMQ如何防止消息丢失?
java·后端·架构·开源·rocketmq
皮卡龙6 小时前
Java常用的JSON
java·开发语言·spring boot·json
PineappleCoder6 小时前
还在重复下载资源?HTTP 缓存让二次访问 “零请求”,用户体验翻倍
前端·性能优化
拉不动的猪6 小时前
webpack编译中为什么不建议load替换ast中节点删除consolg.log
前端·javascript·webpack
李姆斯6 小时前
Agent时代下,ToB前端的UI和交互会往哪走?
前端·agent·交互设计
利刃大大6 小时前
【JavaSE】十三、枚举类Enum && Lambda表达式 && 列表排序常见写法
java·开发语言·枚举·lambda·排序