1、创建pdf环境
- 在工程目录中——File——setting——Project——Python interpreter——(openpyxl、pypdf2、pyecharts、reportlab)添加4个镜像;
- 如果下载环境过慢,切换到国内镜像源中;
2、pdf文件读操作
注意:pdf的获取中,获取的是页(及页中的内容,无法对内容进行修改)
from PyPDF2 import PdfReader
# 1、打开pdf文件
f = open('files/MySQL.pdf','rb')
# 2、获取pdfreader对象
reader = PdfReader(f)
# 3、获取总页数
num = reader.numPages
print(num)
# 4、获取指定页
page1 = reader.getPage(0)
print(page1)
3、pdf文件写操作
from PyPDF2 import PdfWriter,PdfReader
# 1、打开文件
f1= open('files/data1.pdf','wb') # 如果pdf文件 不存在,它会创建
f2 = open('files/MySQL.pdf','rb')
reader = PdfReader(f2)
# 2、新建 Pdfwrite 对象
write = PdfWriter()
# 3、添加页
# 1)添加从另外一个pdf文件中获取到的一页
write.add_page(reader.getPage(0))
# 1)添加空白页
write.add_blank_page()
# 将数据写入到pdf文件中(保存)
f1= open('files/data1.pdf','wb')
write.write(f1)
案列:创建一个新的PDF write
write1 = PdfWriter()
# 打开提供封面的文件
f3 = open('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf','rb')
reader1 = PdfReader(f3)
#打开需要添加的文件
f4 = open('files/MySQL.pdf','rb')
reader2 = PdfReader(f4)
# 添加封面
write1.add_page(reader1.getPage(0))
# 添加需要添加每一页的文件
for x in range(reader2.numPages):
write1.add_page(reader2.getPage(x))
f5 = open('files/newm.pdf','wb')
write1.write(f5)
练习1:在MySQL.pdf文件的最前面加封面,最后面加结束页
from PyPDF2 import PdfWriter,PdfReader
write = PdfWriter()
# 打开需要全部内容的pdf
u3 = open('files/MySQL.pdf','rb')
rea3 = PdfReader(u3)
# 打开提供封面的pdf
u1 = open('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf','rb')
rea1 = PdfReader(u1)
# 打开提供结束页的pdf
u2 = open('files/Python数据分析大纲.pdf','rb')
rea2 = PdfReader(u2)
# 添加封面
write.add_page(rea1.getPage(0))
# 添加正文
for index in range(rea3.numPages):
write.add_page(rea3.getPage(index))
# 获取提供结束也文件的最大页数
a = rea2.numPages
# 添加结束页
write.add_page(rea2.getPage(a -1))
# 保存文件
u4 = open('files/ne1.pdf','wb')
write.write(u4)
4、添加水印
from PyPDF2 import PdfReader,PdfWriter
# 1、获取水印页和需要添加水印的页
water = PdfReader(open('files/water.pdf','rb')).getPage(0)
page = PdfReader(open('files/MySQL.pdf','rb')).getPage(0)
# 2、添加水印
# 需要添加水印的页 .mergePage(水印页)
page.mergePage(water)
# 3、将添加完水印的也写入到一个新的pdf文件中
write = PdfWriter()
write.add_page(page)
write.write(open('files/data2.pdf','wb'))
# 给每一页添加水印
water1 = PdfReader(open('files/water.pdf','rb')).getPage(0)
pdf = PdfReader(open('files/MySQL.pdf','rb'))
# pdf.mergePage(water1)
write1 = PdfWriter()
for x in range(pdf.numPages):
page = PdfReader(open('files/MySQL.pdf','rb')).getPage(x)
page.mergePage(water1)
write1.add_page(page)
write1.write(open('files/123.pdf','wb'))
5、创建水印
# 创建空白的页面的pdf文件
from reportlab.pdfgen import canvas
# 注册字体
from reportlab.pdfbase import pdfmetrics
# 提供字体对象
from reportlab.pdfbase.ttfonts import TTFont
# 1、创建空白的画布
can = canvas.Canvas('files/myWater.pdf')
# 2、添加文字内容
# 1)注册字体名称
# 创建字体对象:TTFont(字体名称,ttf字体文件
font1 = TTFont('f1','files/font1.ttf')
font2 = TTFont('f2','files/font2.ttf')
# 注册字体
pdfmetrics.registerFont(font1)
pdfmetrics.registerFont(font2)
# 2)添加文字
# a、设置字体
can.setFont('f1',30)
# b、设置文字颜色
can.setFillColorRGB(219/255,112/255,147/255,0.5) #一般水印文件都会给一定的透明度
#c、旋转
can.rotate(45)
# 渲染文字
can.drawString(400,100,'你好')
can.rotate(-45)
can.drawString(100,100,'你好嘛?')
# 每更改文字,设置就重来一次
# 3、添加图片
image_data = open('files/1.png','rb')
can.drawImage('files/1.png',150,200)
# 保存文件
can.save()