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