2021.5.21 PDF文件操作
在文件中写入页面
rom PyPDF2 import PdfFileReader, PdfFileWriter
reader1 = PdfFileReader(open('files/MySQL.pdf', 'rb'))
reader2 = PdfFileReader(open('files/HEU_KMS_Activator_v20.0.0用户使用手册.pdf', 'rb'))
writer1 = PdfFileWriter()
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)
f = open('files/new_pdf.pdf', 'wb')
writer1.write(f)
f.close()
添加水印的基本原理
from PyPDF2 import PdfFileWriter, PdfFileReader
reader1 = PdfFileReader(open('files/MySQL.pdf', 'rb'))
water_reader = PdfFileReader(open('files/学习路线图水印.pdf', 'rb'))
water = water_reader.getPage(0)
writer = PdfFileWriter()
for index in range(reader1.getNumPages()):
page = reader1.getPage(index)
page.mergePage(water)
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():
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
pdfmetrics.registerFont(TTFont('font1', 'files/dd.ttf'))
pdfmetrics.registerFont(TTFont('font2', 'files/t2.TTF'))
empty_canvas = canvas.Canvas('files/water.pdf')
empty_canvas.setFont('font1', 50)
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)
empty_canvas.save()