您的位置:首页 > 编程语言 > Python开发

python办公自动化(3)pdf文件批量加文字水印

2020-06-08 05:31 344 查看

python办公自动化(3)pdf文件批量加文字水印

依赖库安装方法,请参阅我之前文章,具体代码如下:

import os,re
from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from PyPDF2 import PdfFileWriter, PdfFileReader

pdfmetrics.registerFont(TTFont('song', 'C:/Windows/Fonts/simsun.ttc'))  # 宋体

######## 1.生成水印pdf的函数 ########
def create_watermark(content):
# 默认大小为30cm*30cm
c = canvas.Canvas('mark.pdf', pagesize=(30 * cm, 30 * cm))
c.translate(10 * cm, 10 * cm)  # 移动坐标原点(坐标系左下为(0,0)))
c.setFont('song', 22)  # 设置字体为宋体,大小22号
c.setFillColorRGB(0.5, 0.5, 0.5)  # 灰色
c.rotate(45)  # 旋转45度,坐标系被旋转
c.drawString(-7 * cm, 0 * cm, content)
c.drawString(7 * cm, 0 * cm, content)
c.drawString(0 * cm, 7 * cm, content)
c.drawString(0 * cm, -7 * cm, content)
c.save()  # 关闭并保存pdf文件

######## 2.为pdf文件加水印的函数 ########
def add_watermark2pdf(input_pdf, output_pdf, watermark_pdf):
watermark = PdfFileReader(watermark_pdf)
watermark_page = watermark.getPage(0)
pdf = PdfFileReader(input_pdf, strict=False)
pdf_writer = PdfFileWriter()
for page in range(pdf.getNumPages()):
pdf_page = pdf.getPage(page)
pdf_page.mergePage(watermark_page)
pdf_writer.addPage(pdf_page)
pdfOutputFile = open(output_pdf, 'wb')
#pdf_writer.encrypt('2020')  # 设置pdf密码
pdf_writer.write(pdfOutputFile)
pdfOutputFile.close()

if __name__ == '__main__':
for dirs,subdir,files in os.walk(os.getcwd()):
for name in files:
if  re.search('^((?!mark|mark_).)*\.pdf',name):
create_watermark('跋山涉水一路风雨')
add_watermark2pdf(name, 'mark_'+name, 'mark.pdf')
print('———————所有文件已转化完毕———————')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: