2021.5.21 PDF文件操作

该博客介绍了如何使用Python的PyPDF2库进行PDF文件的操作,包括合并PDF、添加水印以及批量添加水印。首先,展示了如何读取多个PDF并合并到一个新PDF中,然后演示了如何在PDF上添加水印,最后提供了批量添加水印的函数。此外,还讲述了如何创建带有文字和图片的水印PDF。
摘要由CSDN通过智能技术生成

2021.5.21 PDF文件操作

在文件中写入页面
rom PyPDF2 import PdfFileReader, PdfFileWriter
# 1.以读的方式打开需要合并的两个pdf
reader1 = PdfFileReader(open('files/MySQL.pdf', 'rb'))
reader2 = PdfFileReader(open('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf', 'rb'))
# 2.以写的方式打开一个空白的pdf
writer1 = PdfFileWriter()
# 3.遍历获取原文件的页面
for index in range(reader1.getNumPages()):
    page = reader1.getPage(index)
    writer1.addPage(page)
writer1.addBlankPage()   # 添加一个空白页
for index in range(reader2.getNumPages()):
    page = reader2.getPage(index)
    writer1.addPage(page)
# 4.将writer1中的数据写入到pdf文件中
f = open('files/new_pdf.pdf', 'wb')
writer1.write(f)
f.close()
添加水印的基本原理
from PyPDF2 import PdfFileWriter, PdfFileReader
# 1.打开需要添加水印的pdf
reader1 = PdfFileReader(open('files/MySQL.pdf', 'rb'))
# 2.打开提供水印的pdf
water_reader = PdfFileReader(open('files/学习路线图水印.pdf', 'rb'))
# 获取提供水印的页面
water = water_reader.getPage(0)
# 3.创建writer
writer = PdfFileWriter()
for index in range(reader1.getNumPages()):
    # 获取原文件页面
    page = reader1.getPage(index)
    # 在原页面上添加水印
    page.mergePage(water)
    # 将添加过水印的页面添加到writer中
    writer.addPage(page)

f = open('files/new_pdf2.pdf', 'wb')
writer.write(f)
f.close()
批量添加水印
from PyPDF2 import PdfFileWriter, PdfFileReader
import os
def add_water():
    # 获取水印pdf中的水印页面
    water = PdfFileReader(open('files/学习路线图水印.pdf', 'rb')).getPage(0)

    for file_name in os.listdir('input'):
        reader = PdfFileReader(open(f'input/{file_name}', 'rb'))
        writer = PdfFileWriter()
        for index in range(reader.getNumPages()):
            page = reader.getPage(index)
            page.mergePage(water)
            writer.addPage(page)
        f = open(f'output/{file_name}', 'wb')
        writer.write(f)
        f.close()

if __name__ == '__main__':
    add_water()
创建水印文件
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
# 1.注册字体
# TTFont(字体名, 字体文件路径)
pdfmetrics.registerFont(TTFont('font1', 'files/dd.ttf'))
pdfmetrics.registerFont(TTFont('font2', 'files/t2.TTF'))
# 2.创建画布(创建空白pdf) 画布大小默认21cm*29.7cm
empty_canvas = canvas.Canvas('files/water.pdf')
# 设置画布的字体
empty_canvas.setFont('font1', 50)
# 设置文字颜色
# rgb值的范围是0(0)~1(255)
empty_canvas.setFillColorRGB(1, 0, 0, 0.5)
# 旋转
empty_canvas.rotate(40)
# 添加文字
empty_canvas.drawString(10*cm, 100, 'hello world!')
empty_canvas.setFillColorRGB(0, 1, 0, 0.5)
empty_canvas.setFont('font2', 50)
empty_canvas.drawString(15*cm, 300, '你好世界')
# 添加图片
empty_canvas.drawImage('files/001-diqiu.png', 20*cm, 400)
# 保存pdf文件
empty_canvas.save()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值