pdf添加多行水印,python pdf加水印
给PDF文件加水印的时候,还会一页一页手动添加吗?本文给大家带来一个更方便的方法,就是用2行Python代码实现。有兴趣的朋友可以学习一下。
00-1010 1.导言2。指定水印内容输出到pdf文件2.1模块安装2.2思路2.3代码示例3。水印内容批量输出到pdf文件3.1模块安装3.2思路3.3代码示例4。摘要
目录
屌丝:鱼哥新年快乐!
小雨:如果你不想去三宝堂,就告诉我……
屌丝:别这么直接,都过年了……
鱼:别让它没用。就凭你这点小心思,我也没法知道。
小屌丝:…
小屌丝:鄙视它,只要能帮我解决问题,我鄙视三联!
小雨:……没事,那你告诉我,怎么了?
屌丝:就……就……
鱼:你能不能不要这么粗鲁,马上冷静下来!
屌丝:就是,能不能帮我给pdf文件加水印……
鱼:就在这里…
屌丝:对,就是它!
鱼:不要做出这么天真可爱的小脸。
屌丝:谁曾经不是小可爱?
鱼:该死,坏了。我修不好!
屌丝:Ness ~ ~
今天,我们将分享如何为pdf文档添加水印。
小鱼分享图片添加水印的方法很简单,直接给水印模块添加_watermark即可。
不知道的可以看这个《Python3,2行代码添加水印,发朋友圈,图片再也不怕被盗了!!!》
但是,要给pdf文件添加水印,还需要另外两个库,即:
reportlabpikepdf的两个库有什么特别的‘魔力’,可以给pdf加水印?
别走开,以后再来!
1、 引言
2、指定水印内容输出到pdf文件
因为reportlab库是python的第三方库,所以,
第一步是安装:
pip安装报告实验室
其他安装方式:
《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》
《Python3:我低调的只用一行代码,就导入Python所有库!!》
2.1 模块安装
1.要设置水印字体填充:
所以,我们需要设置一些关于字体的基本信息,比如:
Content:水印文本内容文件名:导出的水印文件名width:画布宽度,单位:mmheight:画布高度,公司:mmfont:对应注册的字体代码fontsize:字体大小角度:旋转角度text_stroke_color_rgb:文本轮廓rgb颜色Text _ fill _ color _ rgb 3360文本填充rgb颜色Text _ fill _ alpha 3360文本透明度2 .将水印字体输出到pdf文档
画布。Canvas.save()方法将输出字体保存到pdf文档。
2.2 思路
直接装载代码:
# -*-编码:utf-8 -*-
# @时间: 2022-02-10
# @作者:卡尔_DJ
从输入导入联合,元组
来自reportla
b.lib import units
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont(msyh,r./msyh.ttc))
用于生成包含content文字内容的水印pdf文件
content: 水印文本内容
filename: 导出的水印文件名
width: 画布宽度,单位:mm
height: 画布高度,单位:mm
font: 对应注册的字体代号
fontsize: 字号大小
angle: 旋转角度
text_stroke_color_rgb: 文字轮廓rgb色
text_fill_color_rgb: 文字填充rgb色
text_fill_alpha: 文字透明度
def create_wartmark(content:str,
filename:str,
width: Union[int, float],
height: Union[int, float],
font: str,
fontsize: int,
angle: Union[int, float] = 45,
text_stroke_color_rgb: Tuple[int, int, int] = (0, 0, 0),
text_fill_color_rgb: Tuple[int, int, int] = (0, 0, 0),
text_fill_alpha: Union[int, float] = 1) -> None:
#创建PDF文件,指定文件名及尺寸,以像素为单位
c = canvas.Canvas(f{filename}.pdf,pagesize=(width*units.mm,height*units.mm))
#画布平移保证文字完整性
c.translate(0.1*width*units.mm,0.1*height*units.mm)
#设置旋转角度
c.rotate(angle)
#设置字体大小
c.setFont(font,fontsize)
#设置字体轮廓彩色
c.setStrokeColorRGB(*text_stroke_color_rgb)
#设置填充色
c.setFillColorRGB(*text_fill_color_rgb)
#设置字体透明度
c.setFillAlpha(text_fill_alpha)
#绘制字体内容
c.drawString(0,0,content)
#保存文件
c.save()
create_wartmark(content=关注carl_奕然,学习更多有趣的python知识,
filename=小鱼watermarkDemo,
width=200,
height=200,
font=msyh,
fontsize=35,
text_fill_alpha=0.3)
运行结果:
3、水印内容批量输出到pdf文件
3.1 模块安装
因为pikepdf库是python的第三方库,所以,
第一步,安装:
pip install pikepdf
其他方式安装:
《Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!》
《Python3:我低调的只用一行代码,就导入Python所有库!!》
小屌丝:鱼哥,为什么我们还需要安装pikepdf这个模块?
小鱼:因为我们要把已生成的pdf水印覆盖到目标pdf文档。
小屌丝:你的意思是,上面的代码,就仅仅是生成一个水印文档,其他的没有了?
小鱼:对的,你可以使用上面已生成的pdf水印文档,也可以随便找一个pdf文档作为水印文档,去覆盖到目标pdf文档。
小屌丝:还可以这么玩?
小鱼:对的,待会给你演示。
3.2 思路
1、需要准备pdf文件:
目标pdf文件
已生成水印的pdf文件
2、我们把已生成的pdf文档来覆盖到目标pdf文档,同样,需要设置的参数:
target_pdf_path:目标pdf文件路径+文件名
watermark_pad_path:水印pdf文件路径+文件名
nrow:水印平铺的行数
ncol:水印平铺的列数
skip_pages:需要跳过不添加水印的页数
目标pdf文档:
3.3 代码示例
# -*- coding:utf-8 -*- # @Time : 2022-02-10 # @Author : carl_DJ from typing import List from pikepdf import Pdf,Page,Rectangle 向目标pdf文件批量添加水印 target_pdf_path:目标pdf文件路径+文件名 watermark_pad_path:水印pdf文件路径+文件名 nrow:水印平铺的行数 ncol:水印平铺的列数 skip_pages:需要跳过不添加水印的页数 def add_watemark(target_pdf_path:str, watermark_pdf_path:str, nrow:int, ncol:int, skip_pages:List[int] = []) -> None: #选择需要添加水印的pdf文件 target_pdf = Pdf.open(target_pdf_path) #读取水印pdf文件并提取水印 watermark_pdf = Pdf.open(watermark_pdf_path) watermark_page = watermark_pdf.pages[0] #遍历目标pdf文件中的所有页,批量添加水印 for idx,target_page in enumerate(target_pdf.pages): for x in range(ncol): for y in range(nrow): #向目标页指定范围添加水印 target_page.add_overlay(watermark_page, Rectangle(target_page.trimbox[2] * x / ncol, target_page.trimbox[3] * y / nrow, target_page.trimbox[2] * (x + 1) / ncol, target_page.trimbox[3] * (y + 1) / nrow )) #保存PDF文件,同时对pdf文件进行重命名,从文件名第7位置写入后缀名 target_pdf.save(target_pdf_path[:6] + _已添加水印.pdf) add_watemark(target_pdf_path=跟小鱼学水印.pdf, #把生成的水印示例,添加到目标水印文件中 watermark_pdf_path=小鱼watermarkDemo.pdf, nrow = 3, ncol = 2 , skip_pages= [0])
运行结果:
4、总结
写到这里,今天的分享就差不多快结束了。
今天主要是对reportlab 库和pikepdf库进行了拓展,让添加水印,不在花钱。
以上就是2行Python代码实现给pdf文件添加水印的详细内容,更多关于Python pdf添加水印的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。