python对PDF文件操作
python对PDF文件操作
下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容。
PDF文件读操作
导入函数
from PyPDF2 import PdfFileReader
1.打开文件创建reader对象,相当于PDF文件对象
reader = PdfFileReader(open('文件路径', 'rb'))
2.获取PDF文件的总页数
num = reader.getNumPages()
3.获取指定页,返回页对象
PDF文件对象.getPage(页的下标)
获取指定页, 下标从0开始,返回页对象。
PDF文件写操作
导入函数
from PyPDF2 import PdfFileWriter, PdfFileReader
1.创建writer对象; 会自动创建一个空的PDF文件
writer = PdfFileWriter()
2.添加页
writer.addPage(页对象)
3.添加空白页
writer.addBlankPage(x, y)
4.保存文件
writer.write(open('保存地址', 'wb'))
PDF文件合并
1.打开两个需要合并的文件,并且创建一个空的PDF文件;
2.添加页,将两个文件的内容都取出来以需要的顺序添加到新文件中
3.保存文件
PDF文件页面操作
1.旋转
旋转的返回值是原页面旋转后的页面
页对象.rotateClockwise(旋转角度)
2.缩放
页对象.scale(x, y)
3.合并(添加水印)
需要添加水印的页对象.mergePage(水印的页对象)
PDF文件创建水印
导入创建空的PDF文件的类
from reportlab.pdfgen.canvas import Canvas
导入注册字体的工具
from reportlab.pdfbase.pdfmetrics import registerFont
导入字体类
from reportlab.pdfbase.ttfonts import TTFont
1.创建空PDF文件
pdf = Canvas('保存地址')
2.添加位置内容
1)设置字体
a.注册字体文件(ttf文件)
registerFont(TTFont('重命名', 'ttf文件地址'))
b.设置PDF文件的字体,可以反复设置
文件对象.setFont(字体名, 字体大小)
2)设置字体颜色,可以反复设置
文件对象.setFillColorRGB(r, g, b, alpha)
计算机三原色:RGB颜色,R->red、G->green、B->blue 标准值是0255;在这里是01,使用时可以用标准值0~255的数据除以255;
alpha:设置透明度,标准值0~1,0为全透明,1为不透明。
3)旋转
文件对象.rotate(旋转角度)
3.添加图片
pdf.drawImage('图片地址', x, y)
4.保存
pdf.save()
PDF文件批量添加水印
from PyPDF2 import PdfFileReader, PdfFileWriter
import os
def add_water(path):
"""
给一个pdf文件添加水印
"""
writer = PdfFileWriter()
reader = PdfFileReader(open(path, 'rb'))
for x in range(reader.getNumPages()):
page = reader.getPage(x)
page.mergePage(water)
writer.addPage(page)
file_name = os.path.basename(path)
writer.write(open(f'out/{file_name}', 'wb'))
def add_all_water():
"""给in文件夹中所有的pdf文件添加水印"""
for name in os.listdir('./in'):
path = os.path.join('./in', name)
add_water(path)
if __name__ == '__main__':
water = PdfFileReader(open('files/学习路线图水印.pdf', 'rb')).getPage(0)
add_all_water()