在现代职场中,保护自己的工作成果不被盗用是一件非常重要的事情。特别是当你为他人制作 PowerPoint 演示文稿时,你可能希望确保你的创意和努力得到适当的认可。本文将介绍如何使用 Python 和 python-pptx
库在 PowerPoint 文件中添加隐形水印,具体步骤包括添加作者信息和嵌入不可见的对象。
C:\pythoncode\new\pptwaterprint.py
所需工具和库
- Python: 你需要在系统中安装 Python。
- wxPython: 用于创建文件选择对话框。
- python-pptx: 用于编辑 PowerPoint 文件。
首先,安装所需的库:
pip install wxPython python-pptx
功能概述
我们的目标是编写一个 Python 脚本,该脚本能够:
- 选择一个 PowerPoint 文件。
- 添加文档属性(如作者、标题、主题和标识符)。
- 在每一张幻灯片中添加一个不可见的文本框,作为隐形水印。
代码实现
下面是实现该功能的完整代码:
import os
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import wx
# 创建一个wxPython应用程序
app = wx.App(False)
openFileDialog = wx.FileDialog(
None, "选择一个PPT文件", "", "",
"PowerPoint files (*.pptx)|*.pptx",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST
)
openFileDialog.ShowModal()
ppt_path = openFileDialog.GetPath()
openFileDialog.Destroy()
# 如果用户选择了文件
if ppt_path:
prs = Presentation(ppt_path)
# 添加文档属性
prs.core_properties.author = '你的名字'
prs.core_properties.title = '你的标题'
prs.core_properties.subject = '你的主题'
prs.core_properties.keywords = '你的关键词'
prs.core_properties.comments = '你的标识符'
# 在每一张幻灯片添加隐形水印
for slide in prs.slides:
textbox = slide.shapes.add_textbox(Inches(0.5), Inches(0.5), Inches(1), Inches(0.5))
text_frame = textbox.text_frame
p = text_frame.add_paragraph()
p.text = '你的标识符'
p.font.size = Pt(10) # 设置非常小的字体
p.font.color.rgb = RGBColor(255, 0, 0) # 设置字体颜色为白色(通常不明显)
# 设置文本框填充为透明
fill = textbox.fill
fill.solid()
fill.fore_color.rgb = RGBColor(255, 255, 255)
fill.fore_color.transparency = 1.0 # 完全透明
# 隐藏文本框的边框
line = textbox.line
line.fill.solid()
line.fill.fore_color.rgb = RGBColor(255, 255, 255)
line.fill.fore_color.transparency = 1.0 # 完全透明
# 保存修改后的PPT
new_ppt_path = os.path.join(os.path.dirname(ppt_path), f"modified_{os.path.basename(ppt_path)}")
prs.save(new_ppt_path)
print(f"PPT已保存到: {new_ppt_path}")
app.MainLoop()
详细步骤解释
1. 创建 wxPython 应用程序
首先,我们创建一个 wxPython 应用程序,并显示一个文件选择对话框,让用户选择一个 PowerPoint 文件。
app = wx.App(False)
openFileDialog = wx.FileDialog(
None, "选择一个PPT文件", "", "",
"PowerPoint files (*.pptx)|*.pptx",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST
)
openFileDialog.ShowModal()
ppt_path = openFileDialog.GetPath()
openFileDialog.Destroy()
2. 编辑 PowerPoint 文件
如果用户选择了文件,我们使用 python-pptx
库加载该文件,并添加文档属性(如作者、标题、主题和标识符)。
prs = Presentation(ppt_path)
prs.core_properties.author = '你的名字'
prs.core_properties.title = '你的标题'
prs.core_properties.subject = '你的主题'
prs.core_properties.keywords = '你的关键词'
prs.core_properties.comments = '你的标识符'
3. 添加隐形水印
我们在每一张幻灯片上添加一个文本框,并将文本框的内容设置为非常小且不易察觉的文本。为了确保文本框不可见,我们设置文本框和边框的颜色为白色,并将其透明度设为100%。
for slide in prs.slides:
textbox = slide.shapes.add_textbox(Inches(0.5), Inches(0.5), Inches(1), Inches(0.5))
text_frame = textbox.text_frame
p = text_frame.add_paragraph()
p.text = '你的标识符'
p.font.size = Pt(1) # 设置非常小的字体
p.font.color.rgb = RGBColor(255, 255, 255) # 设置字体颜色为白色(通常不明显)
# 设置文本框填充为透明
fill = textbox.fill
fill.solid()
fill.fore_color.rgb = RGBColor(255, 255, 255)
fill.fore_color.transparency = 1.0 # 完全透明
# 隐藏文本框的边框
line = textbox.line
line.fill.solid()
line.fill.fore_color.rgb = RGBColor(255, 255, 255)
line.fill.fore_color.transparency = 1.0 # 完全透明
4. 保存修改后的文件
最后,我们将修改后的文件保存到原文件所在目录,并加上 modified_
前缀。
new_ppt_path = os.path.join(os.path.dirname(ppt_path), f"modified_{os.path.basename(ppt_path)}")
prs.save(new_ppt_path)
print(f"PPT已保存到: {new_ppt_path}")
总结
通过上述步骤,我们实现了一个简单的 Python 脚本,该脚本可以为 PowerPoint 文件添加隐形水印,以保护你的创作不被盗用。这种方法确保了你的作品归属权,同时不会影响演示文稿的视觉效果。