一.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()