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