作业:Python操作pdf

该文介绍了如何用Python的reportlab和PyPDF2库来创建和添加水印。首先,通过reportlab创建带文字和旋转效果的水印PDF,然后将此水印应用到目标PDF文件的每一页。最后,展示了如何批量处理多个PDF文件,为input文件夹中的所有PDF添加水印并移除原文件,将加水印后的文件保存到out文件夹。
摘要由CSDN通过智能技术生成

一、制作水印

# 用来创建画布(常见空白的pdf文件)
from reportlab.pdfgen.canvas import Canvas
# 用来对字体进行注册
from reportlab.pdfbase.pdfmetrics import registerFont
from reportlab.pdfbase.ttfonts import TTFont
# 1.创建一个空白文件(画布)
# 在指定的位置新建空白的pdf文件:Canvas(文件路径)
file = Canvas('file/MyWater.pdf')

# 2.添加文字
# 1)注册字体
registerFont(TTFont('f1', 'file/aa.ttf'))
# 2)设置字体的名字和字体大小
file.setFont('f1', 80)
# 3)设置字体颜色
# r、g、b: 0 ~ 1
# 透明度:0 ~ 1
file.setFillColorRGB(139/255, 69/255, 19/255, 0.2)
# 4)旋转
file.rotate(45)

# 文件对象.drawString(x坐标, y坐标, )
file.drawString(180, 60, '这是一个小熊猫水印')

file.rotate(-45)
# 3.渲染图片
# 文件对象.drawImage(图片地址, x坐标, y坐标, mask='auto')
file.setFillColorRGB(139/255, 69/255, 19/255, 0.3)
for i in range(70,800,200):
    for j in range(70,2000,150):
        file.drawImage('file/小熊猫.png', i, j-i, mask='auto')

# 保存
file.save()

二、给pdf添加水印

from PyPDF2 import PdfWriter, PdfReader

reader1 = PdfReader('file/MyWater.pdf')
water = reader1.getPage(0)
reader = PdfReader('file/常微分.pdf')
writer = PdfWriter()
for x in range(reader.getNumPages()):
    page = reader.getPage(x)
    merge_page = page.mergePage(water)
    writer.addPage(page)
writer.write('file/常微分(水印).pdf')

三、批量加水印

将input文件夹中的pdf文件全部加水印储存到out文件夹中,并删除input文件夹中的原文件

from PyPDF2 import PdfWriter, PdfReader
import os

dir = os.listdir('input')
for i in dir:
    reader1 = PdfReader('file/MyWater.pdf')
    water = reader1.getPage(0)
    reader = PdfReader('input/'+i)
    writer = PdfWriter()
    for x in range(reader.getNumPages()):
        page = reader.getPage(x)
        merge_page = page.mergePage(water)
        writer.addPage(page)
    writer.write('out/'+i+'(水印).pdf')
    os.remove('input/'+i)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值