首页 > 编程语言 >Python给PDF文件打水印

Python给PDF文件打水印

时间:2022-11-25 12:36:30浏览次数:30  
标签:__ cm watermark Python 水印 pdf PDF page


坑啊.....PHP实现不了才出此下策:

首先声明使用Python2.7版本!!! Python2.7版本! Python2.7版本! Python2.7版本! 重要的事情说三遍!说三遍!说三遍!

安装包:

pip2 install pypdf2

pip2 install reportlab

废话少说,上代码!

# -*- coding: utf-8 -*-
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
import sys

def create_watermark(content):
# 默认大小为21cm*29.7cm
c = canvas.Canvas("mark.pdf", pagesize=(30 * cm, 30 * cm))
# 移动坐标原点(坐标系左下为(0,0))
c.translate(3 * cm, 5 * cm)


c.setFont("Helvetica", 60)
# 指定描边的颜色
# 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(1.0)
# c.drawString(6 * cm, 3 * cm, content)
# c.setFillAlpha(1)
# c.drawString(9 * cm, 6 * cm, content)

# 关闭并保存pdf文件
c.save()




def watermark(input_pdf, output, watermark):
watermark_obj = PdfFileReader(watermark)
watermark_page = watermark_obj.getPage(0)

pdf_reader = PdfFileReader(input_pdf)
pdf_writer = PdfFileWriter()

# 给所有页面添加水印
for page in range(pdf_reader.getNumPages()):
page = pdf_reader.getPage(page)
page.mergePage(watermark_page)
pdf_writer.addPage(page)

with open(output, 'wb') as f:
pdf_writer.write(f)



if __name__ == '__main__':
origin_file = sys.argv[1]
out_file = sys.argv[2]
mark = sys.argv[3]

# create_watermark('水印文字') # 生成mark文件

watermark(input_pdf=origin_file,output=out_file,watermark=mark)

 

需要注意的点:

 水印文件不能自己制作,调用create_watermark('水印文字')生成;

打码吧.......

 

 

标签:__,cm,watermark,Python,水印,pdf,PDF,page
From: https://blog.51cto.com/u_13940603/5886331

相关文章

  • 想靠Python制作报表?入门不易精通难!还是这个工具操作简单
    Python有多火热,不需要我罗列具体的数据,仅大家回想下见过多少广告就知道。Python最初是由数据分析带起来的,号称自动化办公,表格处理,数据分析,图表制作吸引了一大波人。不过等真......
  • Python爬取7天天气并绘制折线图
    Python爬取7天天气需要的包requestsBeautifulSoupopenpyxl安装包安装命令pipinstall[包名]代码演示第一部分:爬取文件,写入excel表格#爬虫获取天气#导......
  • 《python网络爬虫和信息提取》:中国大学排名(附更改前后的代码)
    python网络爬虫和信息提取  《python网络爬虫和信息提取》是北京理工大学的一门网络课程(中国大学MOOC(慕课))。    偶然机会我在网上学习了这门课程,中国大学......
  • Python 基础(一):入门必备知识
    教程源码下载sv20.com目录1标识符2关键字3引号4编码5输入输出6缩进7多行8注释9数据类型10运算符10.1常用运算符10.2运算符优先级基础进阶爬虫自动化数据分析......
  • 【Python】 文件夹压缩 zip
    文件夹压缩zipimportzipfilesrmdir_all_folder#文件夹路径print('原始文件夹路径:',srmdir_all_folder)zip_name='srmdir_all.zip'#压缩文件名称zip_file......
  • Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操
    我所在的城市昨天出了近20+的阳性案例,但这丝毫没有“影响”到996的工作时间,当然,也没有影响到我想继续更新文章的决心。一、cookie常用操作入门上一篇有写过关于cookie的......
  • Python3基于Centos7的安装
    0x00环境Centos7.9,默认已安装python2.7.50x01依赖软件yuminstallwgetzlib-develbzip2-developenssl-develncurses-develreadline-develtk-develgccmakezl......
  • 第十章python实训
    一、实验目的和要求1、掌握基本文件操作(创建、打开、关闭、写入);2、掌握目录操作的基本操作(创建、删除、遍历);3、了解高级文件操作(删除文件、获取文件基本信息)。二、实验......
  • python中and和or表达式的返回值
    aorb首先明确运算顺序,从左至右#其次只要存在真就会返回真,and返回的是最后一个真,or返回的是第一个真#再次,a,b中存在假,则and返回第一个假,or返回最后一个......
  • 学习《Python编程 从入门到实践》第二、三天
    近期比较忙,宝宝的预产期是12月17日,老婆每天都跟我说准备要生了。所以昨天看了一会就做家务活了,练习完后忘记写日记了。今天给补上。 为什么突然想学编程呢?其实是平常......