20230216 Python操作pdf

一、Pypdf2的使用

from PyPDF2 import PdfReader, PdfWriter

1.PdfReader - 获取pdf文件相关信息

reader1 = PdfReader('files/MySQL.pdf')
reader2 = PdfReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')

1.2 获取总的页数

num = reader.getNumPages()

num1 = len(reader1.pages)
print(num1)

1.3 获取某一页:reader.pages[页下标]

p1 = reader2.getPage(0)
p2 = reader2.getPage(1)

2.PdfWriter - 以页为单位对pdf文件进行写操作

2.1 创建pdf文件对应的writer对象

writer = PdfWriter()

2.2 添加指定页

writer.addPage(p1)  # 从第一个pdf中读取的第一页的内容覆盖在新的这个pdf中
writer.addPage(p2)

2.3 添加空白页

writer.addBlankPage()

2.4 插入指定页

writer.insertPage(p1, 2)

2.5 插入空白页

writer.insertBlankPage()

保存pdf文件

writer.write('files/new.pdf')

二、练习

from PyPDF2 import PdfReader, PdfWriter

r1 = PdfReader('files/MySQL.pdf')
r2 = PdfReader('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf')
p1 = r2.getPage(0)

n1 = r1.getNumPages()
n2 = r2.getNumPages()

w = PdfWriter()

1.给MySQL.pdf文件添加封面

w.insertPage(p1, 0)
for x in range(0, n1):
    p2 = r1.getPage(x)
    w.addPage(p2)

2.将2个pdf文件合并成一个pdf文件

for x in range(0, n1):
    p3 = r1.getPage(x)
    w.addPage(p3)
for y in range(0, n2):
    p4 = r2.getPage(y)
    w.addPage(p4)

3.删除pdf文件中所有下标为奇数的页面(实际拿的是偶数页)(下标从0开始)

for x in range(0, n1, 2):
    p5 = r1.getPage(x)
    w.addPage(p5)

4.在pdf文件中的每一页的后添加一个空白页

for x in range(n1):
    p6 = r1.getPage(x)
    w.addPage(p6)
    w.addBlankPage()

w.write('files/new4.pdf')

三、添加水印

from PyPDF2 import PdfReader, PdfWriter
import os

补充:获取文件夹中所有的文件名:os.listdir(‘文件夹地址’)

result = os.listdir('files')
print(result)

1.准备水印页

r1 = PdfReader('files/water.pdf')
water_page = r1.getPage(0)

2.准备被加水印的pdf

r2 = PdfReader('files/MySQL.pdf')
p2 = r2.getPage(0)
n2 = r2.getNumPages()

3.添加水印

p2.mergePage(water_page)

4.将添加万水印的页面添加到空的pdf中

wt = PdfWriter()

练习:给pdf每一页都添加水印

for x in range(n2):
    p = r2.getPage(x)
    p.mergePage(water_page)
    wt.addPage(p)

wt.write('files/水印2.pdf')

四、创建水印文件

用来创建画布(创建空白的pdf文件)

from reportlab.pdfgen.canvas import Canvas

注册字体

from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfbase.ttfonts import TTFont

1.创建一个空白文件(画布)

在指定位置新建空白的pdf文件:Canvas(‘文件名及路径’)

c = Canvas('files/MyWater.pdf')

2.添加文字

2.1 注册字体(关联字体名称与实际ttf文件)

registerFont(TTFont('f1', 'files/aa.ttf'))
registerFont(TTFont('f2', 'files/FZXSHJW.TTF'))

2.2 设置要用的字体名称和字体大小

c.setFont('f2', 70)

2.3 设置字体颜色

RGB颜色参数:r、g、b:0~1
透明度:0~1

c.setFillColorRGB(139/255, 69/255, 19/255, alpha=0.3)

2.4 旋转

c.rotate(30)

画布对象.drwaString(x坐标, y坐标, ‘内容’)

c.drawString(400, 210, 'MetalSlug')

3.渲染图片

画布对象.drawImage(‘图片地址’,x坐标, y坐标, 透明去白开关=‘自动’)

c.drawImage('files/MetalSlug169.gif', 300, 200, mask='auto')

保存pdf

c.save()

五、批量添加水印作业


from PyPDF2 import PdfReader, PdfWriter
import os

files_list = os.listdir('files1')
print(files_list)

r1 = PdfReader('files/MyWater.pdf')
water_page = r1.getPage(0)

for x in files_list:
    r2 = PdfReader('files1/' + x)
    n2 = r2.getNumPages()
    wt = PdfWriter()
    for y in range(n2):
        p = r2.getPage(y)
        p.mergePage(water_page)
        wt.addPage(p)
    wt.write('files2/' + x)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值