本期,利用python来给pdf文件加水印,我们先来看看wps能不能做这个事情。
可以还是可以的,但需要付费 ,一年118 。但有了python,不存在付费情况,直接上代码:
import PyPDF2from PyPDF2 import PdfFileReader, PdfFileWriterfrom reportlab.lib.units import cmfrom reportlab.pdfgen import canvas #创建一个水印文件def create_watermark(content): # 默认大小为21cm*29.7cm file_name = "mark.pdf" c = canvas.Canvas(file_name, pagesize=(30*cm, 30*cm)) # 移动坐标原点(坐标系左下为(0,0)) c.translate(10*cm, 5*cm) # 设置字体 c.setFont("songti", 30) # 指定描边的颜色 c.setStrokeColorRGB(0, 1, 0) # 指定填充颜色 c.setFillColorRGB(0, 1, 0) # 旋转45度,坐标系被旋转 c.rotate(30) # 指定填充颜色 c.setFillColorRGB(0, 0, 0, 0.1) # 设置透明度,1为不透明 # c.setFillAlpha(0.1) # 画几个文本,注意坐标系旋转的影响 for i in range(5): for j in range(10): a=10*(i-1) b=5*(j-2) c.drawString(a*cm, b*cm, content) c.setFillAlpha(0.1) # 关闭并保存pdf文件 c.save() return file_name create_watermark(r'半个码农2018') # 打开原文件和水印图片文件pdf_file = open('input.pdf', 'rb')watermark_file = open('mark.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 创建一个PdfFileWriter对象pdf_writer = PyPDF2.PdfFileWriter() # 获取水印图片文件watermark = PyPDF2.PdfFileReader(watermark_file) # 遍历原文件的每一页,添加水印for page_num in range(pdf_reader.getNumPages()): page = pdf_reader.getPage(page_num) page.mergePage(watermark.getPage(0)) pdf_writer.addPage(page) # 保存加水印后的文件result_pdf = open('加水印后文件.pdf', 'wb')pdf_writer.write(result_pdf)result_pdf.close() # 关闭文件pdf_file.close()watermark_file.close()
跑一遍,看看效果:
这不,“半个码农2018”的水印就加上了,文字随时可改,还不要钱,哈哈哈