PyPDF2的综合使用

一.PyPDF2的使用

from PyPDF2 import PdfFileReader, PdfFileWriter

#  1.PdfFileReader的用法 - 对PDF文件进行读操作
# 1)创建PdfFileReader对象
file1 = PdfFileReader('files/MySQL.pdf')

# 2)获取页数
count = file1.getNumPages()
print(count)

# 3)获取指定的页,得到页对应的page对象
# 文件对象.getPage(页下标)
page1 = file1.getPage(0)

#  2.PdfFileWriter的用法 - 对PDF文件进行写操作
file2 = PdfFileReader('files/MySQL.pdf')

二.PyPDF2基本应用

from PyPDF2 import PdfReader, PdfWriter

# 1.打开需要添加封面的PDF文件
files1 = PdfReader('files/MySQL.pdf')
# 获取总页数
count = files1.getNumPages()

# 2.准备封面对应的页面
first_page = PdfReader('files/water.pdf').getPage(0)

# 3.创建空的PDF,先添加封面,然后再依次添加原文件的所有页
file2 = PdfWriter()

# 添加封面页
file2.addPage(first_page)

# 依次添加原文件中所有的页面
for x in range(count):
    page = files1.getPage(x)
    file2.addPage(page)

三.添加水印

from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2 import PdfReader, PdfWriter

# # 1.获取需要添加水印的页面
# file1 = PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
#
# # 获取第一页
# page1 = file1.getPage(0)
#
# # 2.获取水印页
# water_page = PdfFileReader('files/water.pdf').getPage(0)
#
# # 3.给第一页添加水印
# page1.mergePage(water_page)
#
# # 4.将添加完水印的页面加到空的PDF文件中
# file2 = PdfFileWriter()
# file2.addPage(page1)
#
# # 5.保存
# file2.write('files/data3.pdf')

# 1.获取原文件
file1 = PdfReader('files/MySQL.pdf')

# 2.创建空白的PDF文件
file2 = PdfWriter()

# 3.准备水印页
water = PdfReader('files/water.pdf').getPage(0)

# 4.依次获取原文件中每一页,添加完水印写入新文件中
for x in range(file1.getNumPages()):
    page = file1.getPage(x)
    page.mergePage(water)
    file2.addPage(page)

# 3.保存
file2.write('files/MySQL2.pdf')

四.创建水印文件

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas

# 1.创建画布(包含一个空白页和PDF文件)
c = canvas.Canvas('files/water.pdf')

# 2.添加文字
# 1)设置文字颜色
c.setFillColorRGB(210/255, 105/255, 30/255, 0.5)

# 2)设置文字字体
# 注册ttf文件对应的字体
pdfmetrics.registerFont(TTFont('f1', 'files/Font.ttf'))
pdfmetrics.registerFont(TTFont('f2', 'files/symbol.ttf'))

# 设置字体
c.setFont('f2', 30)

# 3) 文字倾斜(旋转指定角度)
c.rotate(45)

# 4) 在指定的位置添加文字
# c.drawString(x坐标, y坐标, 文字内容)
c.drawString(450, 100, 'hello 你好!廖书德')

# 重置所有的效果再重新写
c.setFont('f1', 12)
c.setFillColorRGB(180/255, 180/255, 180/255)
c.rotate(-45)
c.drawString(20, 20, '千峰教育')

# 添加图片
# drawImage(图片路径, x坐标, y坐标, 图片宽度, 图片高度)
c.drawImage('files/R-C.jpg', 10, 200, 50, 50)

# 保存
c.save()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyPDF2是一个用于处理PDF文件的Python库。它可以用于合并、分割、旋转、提取页面、加密和解密PDF文件等操作。以下是PyPDF2的最新使用说明: 安装PyPDF2 在安装PyPDF2之前,确保您已经安装了Python。然后,使用以下命令来安装PyPDF2: ```python pip install PyPDF2 ``` 合并PDF文件 要合并多个PDF文件,可以使用以下代码: ```python import PyPDF2 pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf'] output_file = 'merged_files.pdf' pdf_writer = PyPDF2.PdfFileWriter() for pdf_file in pdf_files: pdf_reader = PyPDF2.PdfFileReader(pdf_file) for page_num in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page_num)) with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要合并的PDF文件的名称,并将它们存储在一个列表中。然后,我们创建一个PdfFileWriter对象,并将所有页面添加到它里面。最后,我们将PdfFileWriter对象写入一个新的PDF文件中。 分割PDF文件 要将一个PDF文件分成多个文件,可以使用以下代码: ```python import PyPDF2 pdf_file = 'original_file.pdf' output_dir = 'output_dir/' pdf_reader = PyPDF2.PdfFileReader(pdf_file) for page_num in range(pdf_reader.getNumPages()): pdf_writer = PyPDF2.PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page_num)) output_file = output_dir + 'page_' + str(page_num) + '.pdf' with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要分割的PDF文件的名称,并将其存储在pdf_file变量中。然后,我们创建一个PdfFileReader对象,并使用getNumPages()方法获取PDF文件中的页面数量。接下来,我们循环遍历每个页面,并将其添加到一个新的PdfFileWriter对象中。最后,我们将每个PdfFileWriter对象写入一个新的PDF文件中。 旋转PDF文件 要旋转PDF文件中的页面,可以使用以下代码: ```python import PyPDF2 pdf_file = 'original_file.pdf' output_file = 'rotated_file.pdf' pdf_reader = PyPDF2.PdfFileReader(pdf_file) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.getNumPages()): page = pdf_reader.getPage(page_num) page.rotateClockwise(90) pdf_writer.addPage(page) with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要旋转的PDF文件的名称,并将其存储在pdf_file变量中。然后,我们创建一个PdfFileReader对象,并使用getNumPages()方法获取PDF文件中的页面数量。接下来,我们循环遍历每个页面,并使用rotateClockwise()方法将其顺时针旋转90度。最后,我们将每个页面添加到一个新的PdfFileWriter对象中,并将其写入一个新的PDF文件中。 提取PDF文件中的页面 要从PDF文件中提取单个页面,可以使用以下代码: ```python import PyPDF2 pdf_file = 'original_file.pdf' output_file = 'extracted_page.pdf' page_num = 0 pdf_reader = PyPDF2.PdfFileReader(pdf_file) pdf_writer = PyPDF2.PdfFileWriter() page = pdf_reader.getPage(page_num) pdf_writer.addPage(page) with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要提取页面的PDF文件的名称,并将其存储在pdf_file变量中。然后,我们创建一个PdfFileReader对象,并使用getPage()方法获取要提取的页面。接下来,我们将页面添加到一个新的PdfFileWriter对象中,并将其写入一个新的PDF文件中。 加密和解密PDF文件 要加密PDF文件,可以使用以下代码: ```python import PyPDF2 pdf_file = 'original_file.pdf' output_file = 'encrypted_file.pdf' password = 'password' pdf_reader = PyPDF2.PdfFileReader(pdf_file) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page_num)) pdf_writer.encrypt(password) with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要加密的PDF文件的名称,并将其存储在pdf_file变量中。然后,我们创建一个PdfFileReader对象,并使用getNumPages()方法获取PDF文件中的页面数量。接下来,我们循环遍历每个页面,并将其添加到一个新的PdfFileWriter对象中。最后,我们使用encrypt()方法加密PDF文件,并将其写入一个新的PDF文件中。 要解密PDF文件,可以使用以下代码: ```python import PyPDF2 pdf_file = 'encrypted_file.pdf' output_file = 'decrypted_file.pdf' password = 'password' pdf_reader = PyPDF2.PdfFileReader(pdf_file) pdf_reader.decrypt(password) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page_num)) with open(output_file, 'wb') as f: pdf_writer.write(f) ``` 在上面的代码中,我们首先指定要解密的PDF文件的名称,并将其存储在pdf_file变量中。然后,我们创建一个PdfFileReader对象,并使用decrypt()方法解密PDF文件。接下来,我们使用getNumPages()方法获取PDF文件中的页面数量,并循环遍历每个页面。最后,我们将每个页面添加到一个新的PdfFileWriter对象中,并将其写入一个新的PDF文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值