利用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文件,将水印添加到源文件的每一页,最后将添加完水印的文件保存到一个新的文件中。