使用python对pdf文件进行加密等操作

 更新时间:2024年12月18日 08:53:09   作者:乐茵安全  
这篇文章主要为大家详细介绍了使用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()):打印提取到的文本数据。

代码执行流程

导入库:导入PyPDF2库。

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

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

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

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

注意事项

确保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对象中的内容写入到新文件中。

代码执行流程

导入库:导入PyPDF2库。

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

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

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

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

保存文件:将修改后的内容保存到一个新的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对象中的内容写入到新文件中。

代码执行流程

导入库:导入PyPDF2库。

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

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

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

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

保存文件:将加密后的内容保存到一个新的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对象中的内容写入到新文件中。

代码执行流程

导入库:导入PyPDF2库。

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

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

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

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

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

示例输出

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

每一页都包含了水印。

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

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

以上就是使用python对pdf文件进行加密等操作的详细内容,更多关于python pdf加密的资料请关注脚本之家其它相关文章!

相关文章

  • 安装python3.7编译器后如何正确安装opnecv的方法详解

    安装python3.7编译器后如何正确安装opnecv的方法详解

    这篇文章主要介绍了安装python3.7编译器后如何正确安装opnecv,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 如何基于Django实现上下文章跳转

    如何基于Django实现上下文章跳转

    这篇文章主要介绍了如何基于Django实现上下文章跳转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python中生成随机整数的三种方法

    Python中生成随机整数的三种方法

    本文介绍了如何在Python中生成一到一百随机整数的多种方法,包括random库,NumPy库和random.sample函数这三种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • python中jieba模块的深入了解

    python中jieba模块的深入了解

    这篇文章主要介绍了python中jieba模块的深入了解,jieba模块是一个python第三方中文分词模块,可以用于将语句中的中文词语分离出来
    2022-06-06
  • 通过LyScript实现从文本中读写ShellCode

    通过LyScript实现从文本中读写ShellCode

    LyScript 插件通过配合内存读写,可实现对特定位置的ShellCode代码的导出。本文将利用这一特性实现从文本中读写ShellCode,感兴趣的可以了解一下
    2022-08-08
  • python的Crypto模块实现AES加密实例代码

    python的Crypto模块实现AES加密实例代码

    这篇文章主要介绍了python的Crypto模块实现AES加密实例代码,简单介绍了实现步骤,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 使用python爬虫获取黄金价格的核心代码

    使用python爬虫获取黄金价格的核心代码

    这篇文章主要介绍了利用python爬虫获取黄金价格,需要的朋友可以参考下
    2018-06-06
  • Django之importlib模块的具体使用

    Django之importlib模块的具体使用

    本文主要介绍了Django之importlib模块的具体使用,importlib模块是Python中用于动态加载和导入模块的内置模块,有需要了解jquery event事件用法的朋友可参考
    2023-11-11
  • 爬虫框架 Feapder 和 Scrapy 的对比分析

    爬虫框架 Feapder 和 Scrapy 的对比分析

    本篇文章在源码层面比对 feapder、scrapy 、scrapy-redis 的设计,阅读本文后,会加深您对 scrapy 以及 feapder 的了解,以及为什么推荐使用 feapder,刚兴趣的朋友可以参考下面文章内容
    2021-09-09
  • python模拟登陆网站的示例

    python模拟登陆网站的示例

    这篇文章主要介绍了python模拟登陆网站的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03

最新评论