欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python添加pdf水印

发布时间:2025/6/16 python 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python添加pdf水印 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

0、用到两个扩展模块:ReportLab、PyPDF2。

1、创建水印PDF。

1)、创建文字水印pdf文件

代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #encoding=utf-8 #author: walker #date: 2014-03-17 #function: 创建文字水印pdf from reportlab.pdfgen import canvas from reportlab.lib.units import cm def create_watermark(content):     #默认大小为21cm*29.7cm     c = canvas.Canvas("mark.pdf", pagesize = (30*cm, 30*cm))     #移动坐标原点(坐标系左下为(0,0))     c.translate(10*cm, 5*cm)                                                                                                                                      #设置字体     c.setFont("Helvetica", 80)     #指定描边的颜色     c.setStrokeColorRGB(0, 1, 0)     #指定填充颜色     c.setFillColorRGB(0, 1, 0)     #画一个矩形     c.rect(cm, cm, 7*cm, 17*cm, fill=1)                                                                                                                                      #旋转45度,坐标系被旋转     c.rotate(45)     #指定填充颜色     c.setFillColorRGB(0.6, 0, 0)     #设置透明度,1为不透明     c.setFillAlpha(0.3)     #画几个文本,注意坐标系旋转的影响     c.drawString(3*cm, 0*cm, content)     c.setFillAlpha(0.6)     c.drawString(6*cm, 3*cm, content)     c.setFillAlpha(1)     c.drawString(9*cm, 6*cm, content)                                                                                                                                      #关闭并保存pdf文件     c.save() create_watermark('walker')

效果图:

2)、创建图片水印pdf。

代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #encoding=utf-8 #author: walker #date: 2014-03-17 #function: 创建图片水印pdf from reportlab.pdfgen import canvas from reportlab.lib.units import cm def create_watermark(f_jpg):     f_pdf = 'mark.pdf'     w_pdf = 20*cm     h_pdf = 20*cm                                                                                                 c = canvas.Canvas(f_pdf, pagesize = (w_pdf, h_pdf))     c.setFillAlpha(0.3) #设置透明度     print c.drawImage(f_jpg, 7*cm, 7*cm, 6*cm, 6*cm)    #这里的单位是物理尺寸     c.save() create_watermark('eg.png')

效果图:


2、添加水印。

代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #encoding=utf-8 #author: walker #date: 2014-03-18 #function:给pdf添加水印 from PyPDF2 import PdfFileWriter, PdfFileReader from reportlab.pdfgen import canvas #所有路径为绝对路径 def add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):     pdf_output = PdfFileWriter()     input_stream = file(pdf_file_in, 'rb')     pdf_input = PdfFileReader(input_stream)                                                                                      # PDF文件被加密了     if pdf_input.getIsEncrypted():         print '该PDF文件被加密了.'         # 尝试用空密码解密         try:             pdf_input.decrypt('')         except Exception, e:             print '尝试用空密码解密失败.'             return False         else:             print '用空密码解密成功.'     # 获取PDF文件的页数     pageNum = pdf_input.getNumPages()     #读入水印pdf文件     pdf_watermark = PdfFileReader(file(pdf_file_mark, 'rb'))     # 给每一页打水印     for i in range(pageNum):         page = pdf_input.getPage(i)         page.mergePage(pdf_watermark.getPage(0))         page.compressContentStreams()   #压缩内容         pdf_output.addPage(page)

效果图:


3、这种方式唯一的缺点就是效率极低,不适合大批量文件处理。用PDFlib处理效率会比这种方式高几十倍。可参考:用PDFlib给PDF添加水印(Python)



*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1378142如需转载请自行联系原作者


RQSLT

总结

以上是生活随笔为你收集整理的Python添加pdf水印的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。