day21-pdf作业

day21-pdf作业

给文件添加水印1
from PyPDF2 import PdfFileReader, PdfFileReader, PdfFileWriter
from reportlab.pdfgen import canvas # 提供pdf文件
from reportlab.pdfbase import pdfmetrics    # 注册字体
from reportlab.pdfbase.ttfonts import TTFont    # 提供字体对象
import os
import reportlab
# 作业:将指定文件夹中所有的pdf文件的所有也都添加属于自己的水印

# 1.注册字体
pdfmetrics.registerFont(TTFont('font1', 'files02/bb.ttf'))
pdfmetrics.registerFont(TTFont('font2', 'files02/青呱石头体.ttf'))
pdfmetrics.registerFont(TTFont('font3', 'files02/dd.ttf'))
# 2.创建pdf文件
pdf = canvas.Canvas('files02/water02.pdf')
pdf.rotate(45)
# 3.熏染文字
# 1)设置字体
# setFont(字体名,字体大小)
pdf.setFont('font3', 50)
# 2)设置文字颜色
# 计算机三原色:红绿蓝,(0~255)
# setFillColorRGB(r, g, b,透明度)
# 注意:r、g、b的取值范围是0~1
#       透明度取值范围0~1
pdf.setFillColorRGB(0, 0, 1, 0.5)
# 3)熏染文字(写字)
pdf.drawString(250, 100, '紫檀香做这个玩意都要做疯了')
# 4.保存文件
pdf.save()

"""
第一步:用循环获取文件夹里面每一个pdf到的文件名,并存起来
第二步:用循环获取每个pdf文件的内容并印上水印
第三步:把所有的循环封装成函数
第四步:简化程序
"""
# pdfs_data = []
# file_dir = "D:/PycharmProjects/new-day21csv和pdf文件操作/作业data"
# for root, dirs, files in os.walk(file_dir, topdown=False):
#     length = len(files)
#     # print(files)
#     for i in range(length):
#         pdfs_data.append(files[i])
#     print(length)
# print(pdfs_data)
# pdfs_data1 = pdfs_data[0]
# # pdfs_data2 = eval(pdfs_data[1])
# # pdfs_data3 = eval(pdfs_data[2])
# print(pdfs_data1, type(pdfs_data1))
# # print(pdfs_data2)
# # print(pdfs_data3)
# nums1 = 'pdfs/pdfs/pdfs_data1'
# # nums2 = 'pdfs/pdfs/pdfs_data2'
# # nums3 = 'pdfs/pdfs/pdfs_data3'
# print(nums1)
# # print(nums2)
# # print(nums3)
reader1 = PdfFileReader(open('作业data/HEU_KMS_Activator_v20.0.0用户使用手册.pdf', 'rb'))
reader2 = PdfFileReader(open('作业data/存储引擎的讲解.pdf', 'rb'))
reader3 = PdfFileReader(open(r'作业data/Python.pdf', 'rb'))
reader_water = PdfFileReader(open('files02/water02.pdf', 'rb'))
page_num1 = reader1.numPages
page_num2 = reader2.numPages
page_num3 = reader3.numPages
water_page = reader_water.getPage(0)
writer1 = PdfFileWriter()
writer2 = PdfFileWriter()
writer3 = PdfFileWriter()
for i in range(page_num1):
    reader1.getPage(i).mergePage(water_page)
    writer1.addPage(reader1.getPage(i))

for x in range(page_num2):
    reader2.getPage(x).mergePage(water_page)
    writer2.addPage(reader2.getPage(x))

for z in range(page_num3):
    reader3.getPage(z).mergePage(water_page)
    writer3.addPage(reader3.getPage(z))

# 5.准备空的pdf用来保存水印页
writer1.write(open('作业data/new_用户手册.pdf', 'wb'))
writer2.write(open('作业data/new_存储引擎.pdf', 'wb'))
writer3.write(open('作业data/new_课程大纲.pdf', 'wb'))

给pdf文件添加水印2
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

# 1.注册字体
pdfmetrics.registerFont(TTFont('font1', 'files02/bb.ttf'))
pdfmetrics.registerFont(TTFont('font2', 'files02/青呱石头体.ttf'))
pdfmetrics.registerFont(TTFont('font3', 'files02/dd.ttf'))
# 2.创建pdf文件
pdf = canvas.Canvas('files02/water02.pdf')
pdf.rotate(45)
# 3.熏染文字
# 1)设置字体
# setFont(字体名,字体大小)
pdf.setFont('font3', 50)
# 2)设置文字颜色
# 计算机三原色:红绿蓝,(0~255)
# setFillColorRGB(r, g, b,透明度)
# 注意:r、g、b的取值范围是0~1
#       透明度取值范围0~1
pdf.setFillColorRGB(0, 0, 1, 0.5)
# 3)熏染文字(写字)
pdf.drawString(250, 100, '紫檀香做这个玩意都要做疯了')
# 4.保存文件
pdf.save()
reader_water = PdfFileReader(open('files02/water02.pdf', 'rb'))
os.mkdir('data02')
for file_name in os.listdir('data02'):
    if file_name[-4:] == '.pdf':
        result = open('data02' + file_name, 'rb')
        file_reader = PdfFileReader(result)
        page_num = file_reader.numPages
        water_page = reader_water.getPage(0)
        empty = PdfFileWriter()
        for x in range(page_num):
            file_reader.getPage(x).mergePage(water_page)
            empty.addPage(file_reader.getPage(x))
            empty.write(open('data02/new_' + file_name, 'wb'))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值