当前位置: 首页 > news >正文

使用PyMuPDF添加PDF水印

使用Python添加PDF水印的博客文章。
C:\pythoncode\new\pdfwatermark.py
在这里插入图片描述
在这里插入图片描述

使用Python在PDF中添加水印

在日常工作中,我们经常需要对PDF文件进行处理。其中一项常见的需求是向PDF文件添加水印,以保护文件的版权或标识文件的来源。本文将介绍如何使用Python编程语言和PyMuPDF库在PDF文件中添加水印。

准备工作

在开始之前,确保已经安装了以下组件:

  • Python编程环境
  • PyMuPDF库

可以使用pip命令安装PyMuPDF库:


pip install PyMuPDF

编写代码

首先,我们需要导入所需的库:

import fitz

接下来,我们创建一个函数来添加水印到PDF文件的每一页:

def add_watermark_to_pdf(pdf_path, watermark_text, output_path):try:doc = fitz.open(pdf_path)watermark_text = str(watermark_text)for page in doc:textbox = fitz.Rect(100, 100, 300, 200)  # 设置水印的位置和大小page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=90)doc.save(output_path)doc.close()print("水印添加成功!")except Exception as e:print("添加水印时出错:", str(e))

在上述代码中,我们打开PDF文件,遍历每一页,然后使用insert_textbox()方法将水印添加到每一页中。

使用示例

接下来,我们可以使用上述函数来添加水印。

pdf_path = "input.pdf"
watermark_text = "我的水印"
output_path = "output.pdf"add_watermark_to_pdf(pdf_path, watermark_text, output_path)

在上述示例中,我们指定了输入PDF文件的路径、要添加的水印文本和输出文件的路径。运行代码后,将会在输出路径生成带有水印的PDF文件。

全部代码

import wx
import fitzclass WatermarkFrame(wx.Frame):def __init__(self, parent, title):super(WatermarkFrame, self).__init__(parent, title=title, size=(400, 200))panel = wx.Panel(self)# 创建选择文件按钮self.file_picker = wx.FilePickerCtrl(panel, style=wx.FLP_OPEN)# 创建水印文本输入框self.watermark_text = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER)# 创建保存文件夹按钮self.save_folder_picker = wx.DirPickerCtrl(panel, style=wx.DIRP_USE_TEXTCTRL)# 创建生成按钮generate_button = wx.Button(panel, label='生成')generate_button.Bind(wx.EVT_BUTTON, self.on_generate_button_click)# 创建布局sizer = wx.BoxSizer(wx.VERTICAL)sizer.Add(self.file_picker, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)sizer.Add(self.watermark_text, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)sizer.Add(self.save_folder_picker, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)sizer.Add(generate_button, proportion=0, flag=wx.ALL|wx.CENTER, border=10)panel.SetSizer(sizer)def on_generate_button_click(self, event):file_path = self.file_picker.GetPath()watermark_text = self.watermark_text.GetValue()save_folder = self.save_folder_picker.GetPath()if file_path and watermark_text and save_folder:try:doc = fitz.open(file_path)# watermark_text = watermark_text.encode('utf-8')watermark_text = str(watermark_text)for page in doc:textbox = fitz.Rect(100, 100, 300, 200)  # 水印的位置和大小# page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=45)page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=90)# output_file_path = f"{save_folder}/watermarked_{file_path.split('/')[-1]}"output_file_path = f"outputwatermark.pdf"doc.save(output_file_path)doc.close()wx.MessageBox("水印添加成功!", "成功", wx.OK | wx.ICON_INFORMATION)except Exception as e:wx.MessageBox(str(e), "错误", wx.OK | wx.ICON_ERROR)else:wx.MessageBox("请选择文件、输入水印文本和保存文件夹!", "错误", wx.OK | wx.ICON_ERROR)if __name__ == '__main__':app = wx.App()frame = WatermarkFrame(None, "添加水印")frame.Show()app.MainLoop()

总结

通过使用Python和PyMuPDF库,我们可以轻松地向PDF文件添加水印。可以根据需求定制水印的位置、大小和旋转角度。这种方法不仅简单高效,还可以自动化处理大量的PDF文件。

http://www.lryc.cn/news/137202.html

相关文章:

  • window如何实时刷新日志文件
  • 动态代理的两个使用方式(手动实现+SpringAOP实现)-Demo
  • 面试话术(MQ+mybatis+nginx+redis+ssm+mysql+linux)
  • JSON的理解
  • 面试热题(二叉树的最大路径)
  • C#设计模式之--六大原则 开闭原则
  • 编写Dockerfile制作自己的镜像并推送到私有仓库
  • 华为OD-分积木/分苹果
  • Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些?
  • 【懒加载】js实现懒加载、vue实现图片懒加载指令
  • 微信小程序教学系列(7)
  • Android 9.0 kenel和frameworks中修改ram运行内存的功能实现
  • PHP实践:获取网络上图片的长宽以及图片类型
  • 使用 DPO 微调 Llama 2
  • 数据库——事务,事务隔离级别
  • 对《VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库》的改进
  • 【PHP】数据类型运算符位运算
  • 使用 Nacos 作为 Spring Boot 配置中心
  • 微服务 Eureka
  • Spring Boot 事务和事务传播机制
  • 计算机组成原理(巨巨巨基础篇)
  • C语言:选择+编程(每日一练Day7)
  • leetcode做题笔记93. 复原 IP 地址
  • HTTPS 中间人攻击
  • MATLAB打开excel读取写入操作例程
  • [C语言]分支与循环
  • 绘制区块链之链:解码去中心化、安全性和透明性的奇迹
  • 4G工业路由器的功能与选型!详解工作原理、关键参数、典型品牌
  • c与c++中struct的主要区别和c++中的struct与class的主要区别
  • mysql中char_length()和length()