一、Pypdf2的使用
-
导入相关库
from PyPDF2 import PdfFileReader, PdfFileWriter
-
PdfFileReader的用法
: 对pdf文件进行读操作
-
PdfFileReader(原文件)
- 打开pdf文件创建reader对象,返回只读pdf文件对象 -
file1.getNumPages()
- 获取pdf文件中的页数 -
文件对象.getPage(页下标)
- 获取指定页,得到页对应的Page对象file1 = PdfFileReader('files/MySQL.pdf') count = file1.getNumPages() print(count) page1 = file1.getPage(0)
PdfFileWriter的用法
: 对pdf文件进行写操作
-
PdfFileWriter()
- 以写的方式打开pdf文件创建一个只写的pdf文件对象(空文件) -
addBlankPage(长, 高)
- 添加空白页 -
addPage(page)
- 添加指定页# 1)以写的方式打开pdf文件创建一个只写的pd文件对象 # file2 = PdfFileWriter() # # file2.write('files/data1.pdf') # pdf文件没内容,即打不开或者被损坏 # 1)以写的方式打开pdf文件创建一个只写的pd文件对象 # a.PdfFileWriter() - 创建一个空的pdf文件 file2 = PdfFileWriter() # 2)添加空白页 file2.addBlankPage(300, 400) # 3)添加指定页 file2.addPage(page1) # 4)保存文件 file2.write('files/data1.pdf')
二、Pypdf2的基本操作
-
导入相关库
from PyPDF2 import PdfReader, PdfWriter, PdfFileReader, PdfFileWriter
-
案例1:插入封面
PdfReader('原文件')
- 打开需要添加封面的pdf文件file1.getNumPages()
- 获取总页数PdfReader('原文件').getPage(页码)
准备封面对应的页面PdfWriter()
- 创建空的pdf文件,先添加封面页,然后再依次添加原文件的所有的页
file1 = PdfReader('files/MySQL.pdf') count = file1.getNumPages() first_page = PdfReader('files/water.pdf').getPage(0) file2 = PdfWriter() # 添加封面页 file2.addPage(first_page) # 依次添加原文件中所有的页面 for i in range(count): page = file1.getPage(i) file2.addPage(page) # 4.保存文件 file2.write('files/MySQL.pdf')
-
练习:两个pdf文件合并成一个pdf文件
from PyPDF2 import PdfReader, PdfWriter, PdfFileReader, PdfFileWriter file1 = PdfFileReader('files/MySQL.pdf') file2 = PdfFileReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf') count1 = file1.getNumPages() print(count1) count2 = file2.getNumPages() # 准备封面对应的页面 first_page = PdfFileReader('files/water.pdf').getPage(0) # 3.创建空的pdf文件,先添加封面页,然后再依次添加原文件的所有的页 file3 = PdfWriter() for i in range(count1): page = file1.getPage(i) file3.addPage(page) file3.addPage(first_page) for j in range(count2): page = file2.getPage(j) file3.addPage(page) file3.addPage(first_page) file3.write('files/data2.pdf')
三、添加水印
-
导入需要用到的库
from PyPDF2 import PdfReader, PdfWriter, PdfFileReader
-
案例:给指定文件第一页添加水印
file1 = PdfReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf') # 获取第一页 page1 = file1.getPage(0) # 2.获取水印页 water_page = PdfReader('files/water.pdf').getPage(0) # 3.给第一页添加水印 page1.mergePage(water_page) # 4.将添加完水印的页添加到空的pdf文件中 file2 = PdfWriter() file2.addPage(page1) # 5.保存 file2.write('files/data3.pdf')
-
练习:给MySQL.pdf文件每一页都添加水印
file1 = PdfReader('files/MySQL.pdf') file2 = PdfWriter() count1 = file1.getNumPages() # 水印页 water_page = PdfReader('files/water.pdf').getPage(0) for i in range(2, count1): page = file1.getPage(i) page.mergePage(water_page) file2.addPage(page) file2.write('files/data4.pdf')
四、创建水印文件
-
导入相关库
from reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont
-
创建画布(包含一个空白页的pdf文件)
c = canvas.Canvas('files/water2.pdf')
-
添加文字内容
c.setFillColorRGB(210/255, 105/255, 30/255, 透明度)
设置文件颜色- 注册ttf文件对应的字体 - 设置文字字体
rotate(旋转指定角度)
- 设置文字角度(水平为0°)c.drawString(x坐标, y坐标, 文字内容)
- 在指定的位置添加文字drawImage(图片路径, x坐标, y坐标, 图片宽度, 图片高度)
- 添加图片
# 1)设置文件颜色 透明度 c.setFillColorRGB(210/255, 105/255, 30/255, 0.3) # 2)设置文字字体 pdfmetrics.registerFont(TTFont('f1', 'files/dd.ttf')) # 设置字体 c.setFont('f1', 40) c.rotate(45) c.drawString(350, 100, '三眼五显仙人——魈') # 重置所有的效果再重新写 c.setFont('f1', 50) c.setFillColorRGB(10/255, 149/255, 237/255) c.rotate(-45) # 回正 c.drawString(100, 200, '上仙') c.drawImage('files/魈魈.png', 30, 30, 80, 80) # 保存 c.save()