【小沐学写作】PPT、PDF文件添加水印(Python)

您所在的位置:网站首页 如何给ppt加水印,不让别人用 【小沐学写作】PPT、PDF文件添加水印(Python)

【小沐学写作】PPT、PDF文件添加水印(Python)

2024-07-17 19:43| 来源: 网络整理| 查看: 265

文章目录 1、简介2、ppt添加水印2.1 PowerPoint幻灯片母版2.2 iSlide插件(收费)2.2.1 iSlide简介2.2.2 iSlide定价2.2.3 iSlide水印 2.3 Python代码2.3.1 Aspose.Slides for Python(收费) 3、pdf添加水印3.1 Python代码3.1.1 PyPDF2 结语

1、简介

水印通常用于保护文档或指定其所有权。另一方面,它们用于显示文档的状态,例如手稿、草稿等。在本文中,我们将演示如何在 PowerPoint 演示文稿中插入水印。您将学习如何在 Python 中为 PowerPoint PPT 幻灯片添加文本或图像水印。

2、ppt添加水印 2.1 PowerPoint幻灯片母版

https://support.microsoft.com/zh-cn/office/%E5%90%91%E5%B9%BB%E7%81%AF%E7%89%87%E6%B7%BB%E5%8A%A0%E6%B0%B4%E5%8D%B0-1246244d-f465-4e4f-b9f9-49acdae00ff1

在 PowerPoint 中,可以在幻灯片中放置文本背景以获取该水印效果。 步骤简述如下:

若要向所有幻灯片添加水印,选择“视图”>“幻灯片母版”。 滚动到左侧缩略图窗格的顶部,选择第一项“幻灯片母版”。选择“插入”>“文本框”,然后在幻灯片母版上单击并拖动鼠标,画出文本框。在文本框中键入水印文字(如“草稿”)。若要更改水印文本的对齐方式,请在文本框顶部单击并按住旋转图柄,然后向左或向右移动鼠标。选中文本框中的文本。 选择浅色字体填充颜色,然后对字体和样式进行任何其他更改。 (如果看不到“ 格式 ”选项卡,请确保已选择文本框。)退出“幻灯片母版”。 除标题页外的所有幻灯片都会具有该文本。

详细步骤如下:

1、打开ppt,在菜单栏找到“视图”——“幻灯片母版” 在这里插入图片描述

2、打开后选择需要加水印的版式。如果想给所有页面都加上水印,可以选择母版,就是最上面那个。 在这里插入图片描述

3、选择“插入”>“文本框”,然后在幻灯片母版上单击并拖动鼠标,画出文本框。在文本框中键入水印文字(如“内部资料”)。并按住旋转图柄向左或向右移动鼠标。 在这里插入图片描述

4、退出“幻灯片母版”。一般所有幻灯片都会具有该文本。 在这里插入图片描述

这个方法有一个缺点,就是添加的水印容易被遮挡。

2.2 iSlide插件(收费)

https://www.islide.cc/

iSlide 是一款基于 PPT 的插件工具,包含 52 个设计辅助功能,9 大在线资源库,超 50 万专业 PPT 模板/素材 支持 macOS 和 Windows 系统(兼容 Office 和 WPS)

2.2.1 iSlide简介

iSlide 专门针对 PPT 编辑过程中的问题,通过功能、模板及课程学习的方式,帮助用户做出改变, 更高效的创建专业 PPT 演示文档。 在这里插入图片描述 即装即用,与 PPT/WPS 软件无缝对接,下载模板直接插入 PPT/WPS 演示文档;简单快捷,会使用 PPT 就能使用 iSlide,节约学习成本。 在这里插入图片描述

2.2.2 iSlide定价

在这里插入图片描述

2.2.3 iSlide水印

借助iSlide插件的【增删水印】功能。批量添加和删除页面水印,可将页面上选中的任意元素(文本框,图形,图片,图标,图表,表格)批量添加到所有页面或指定的页面,并保持位置不变。

插入水印到PPT中;

打开【增删水印】,右键点击选中水印,【增加水印】并点击【使用所选形状】; 在这里插入图片描述

选择需要添加水印的页面,比如【所选幻灯片】;编辑好水印的内容,通常是文本框,形状,或插入的图片。选择要应用成水印的内容,点击增删水印面板中的“应用”按钮,可以快速将水印内容复制到所有幻灯片页面(或指定页面)。 在这里插入图片描述

对于已增加的水印也可以通过“删除水印”的选项,快速清除。打开【增删水印】,左键点击选中水印,【删除水印】并点击【使用所选形状】;选择需要删除水印的页面,比如【所有幻灯片】

iSlide添加的水印会在最上层,不会被遮挡。

2.3 Python代码 2.3.1 Aspose.Slides for Python(收费)

要在 PPT 幻灯片中添加或删除水印,我们将使用 Aspose.Slides for Python via .NET。该库使您能够从 Python 应用程序中无缝地创建和操作 PowerPoint 演示文稿。

(1)使用以下 pip 命令从 PyPI 安装库。 pip install aspose.slides (2)实现步骤: 首先,使用 Presentation 类加载 PowerPoint PPT/PPTX。获取要添加水印的幻灯片的参考。计算水印的位置。使用 addautoshape() 方法为水印添加新的自动形状。使用 addtextframe() 方法将文本框架添加到形状。设置水印的字体大小、颜色、顺序和旋转角度。锁定水印以避免删除或修改。最后,使用 Presentation.save(string, SaveFormat) 方法保存更新的 PowerPoint 文件。 (3)测试代码如下: import aspose.slides as slides import aspose.pydrawing as drawing # 加载演示 with slides.Presentation("d:\\test.pptx") as presentation: # 选择幻灯片 # slide = presentation.slides[0] slide = presentation.masters[0] # 设置水印位置 center = drawing.PointF(presentation.slide_size.size.width / 2, presentation.slide_size.size.height / 2) width = 600 height = 500 x = center.x - width / 2 y = center.y - height / 2 # 加水印 watermarkShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, x, y, height, width) watermarkShape.name = "watermark" watermarkShape.fill_format.fill_type = slides.FillType.NO_FILL watermarkShape.line_format.fill_format.fill_type = slides.FillType.NO_FILL print(dir(drawing.Color)) # 设置水印文字、字体和颜色 watermarkTextFrame = watermarkShape.add_text_frame("内部资料2023年") watermarkPortion = watermarkTextFrame.paragraphs[0].portions[0] watermarkPortion.portion_format.font_height = 91 watermarkPortion.portion_format.fill_format.fill_type = slides.FillType.SOLID watermarkPortion.portion_format.fill_format.solid_fill_color.color = drawing.Color.light_gray # 锁定水印避免修改 watermarkShape.shape_lock.select_locked = True watermarkShape.shape_lock.size_locked = True watermarkShape.shape_lock.text_locked = True watermarkShape.shape_lock.position_locked = True watermarkShape.shape_lock.grouping_locked = True # 设置旋转 watermarkShape.rotation = -45 # 发回 slide.shapes.reorder(0, watermarkShape) # 保存演示文稿 presentation.save("d:\\out.pptx", slides.export.SaveFormat.PPTX)

测试结果如下: 在这里插入图片描述

3、pdf添加水印 3.1 Python代码 3.1.1 PyPDF2

PyPDF2 是一个免费的开源纯 python PDF 库,能够拆分、合并、裁剪和转换 PDF 文件的页面。它还可以添加 PDF 文件的自定义数据、查看选项和密码。PyPDF2 也可以从 PDF 中检索文本和元数据。

pip install PyPDF2 pip install PyPDF2[crypto]

在这里插入图片描述

(1)制作水印模板页

新建一个空白的word文件。ppt页面默认和word都是一样的,A4纸。将word的页面方向设置成横向。 在这里插入图片描述

添加自定义水印到word里。 在这里插入图片描述

修改水印的内容和格式等。 在这里插入图片描述

word水印模板制作完成。 在这里插入图片描述

另保存为watermark.pdf。 在这里插入图片描述

(2)代码实现添加水印到pdf 编写python代码如下:

import PyPDF2 def add_watermark(water_file, page_pdf): """ 将水印pdf与pdf的一页进行合并 :param water_file: :param page_pdf: :return: """ pdfReader = PyPDF2.PdfReader(water_file) page_pdf.merge_page(pdfReader.pages[0]) page_pdf.compress_content_streams() # 压缩内容 return page_pdf def add_watermark_all(water_file, pdf_file, out_file): """ 将水印pdf与pdf进行合并 :param water_file: :param pdf_file: :return: """ pdfWriter = PyPDF2.PdfWriter() # 用于写pdf pdfReader = PyPDF2.PdfReader(pdf_file) # 读取pdf内容 # 遍历pdf的每一页,添加水印 for page in range(len(pdfReader.pages)): page_pdf = add_watermark(water_file, pdfReader.pages[page]) pdfWriter.add_page(page_pdf) with open(out_file, 'wb') as target_file: pdfWriter.write(target_file) if __name__ == '__main__': pdf_file_mark = 'watermark.pdf' pdf_file_in = 'test.pdf' pdf_file_out = 'out.pdf' add_watermark_all(pdf_file_mark, pdf_file_in, pdf_file_out)

加了水印的pdf文件如下: 在这里插入图片描述 在这里插入图片描述

另一种方式,不需要word水印模板。

安装额外的库reportlab: pip install reportlab

若要想ReportLab支持中文,可以去下载SimSun.ttf字体,并把它放在/ python3.8/site-packages/reportlab/fonts文件夹下。字体下载链接:https://github.com/StellarCN/scp_zh/tree/master/fonts

python代码如下: from PyPDF2 import PdfReader, PdfWriter from reportlab.lib.units import cm from reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont def create_watermark(content): """水印信息""" # 默认大小为21cm*29.7cm file_name = "mark.pdf" c = canvas.Canvas(file_name, pagesize=(30*cm, 30*cm)) # 设置字体 try: pdfmetrics.registerFont(TTFont('yahei', 'C:\\Windows\\Fonts\\msyhbd.ttf')) c.setFont('yahei', 50) # pdfmetrics.registerFont(TTFont("SimSun", "SimSun.ttf")) # c.setFont("SimSun", 30) except: # 默认字体,只能够显示英文 c.setFont("Helvetica", 30) # 移动坐标原点(坐标系左下为(0,0)) c.translate(10*cm, 5*cm) # 指定描边的颜色 c.setStrokeColorRGB(0, 1, 0) # 指定填充颜色 c.setFillColorRGB(0, 1, 0) # 旋转45度,坐标系被旋转 c.rotate(30) # 指定填充颜色 c.setFillColorRGB(0, 0, 0, 0.1) # 设置透明度,1为不透明 # c.setFillAlpha(0.1) # 画几个文本,注意坐标系旋转的影响 # c.drawString(0 * cm, 3 * cm, content) for i in range(5): for j in range(10): a=10*(i-1) b=5*(j-2) c.drawString(a*cm, b*cm, content) c.setFillAlpha(0.1) # 关闭并保存pdf文件 c.save() return file_name def add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out): """把水印添加到pdf中""" pdf_output = PdfWriter() input_stream = open(pdf_file_in, 'rb') pdf_input = PdfReader(input_stream, strict=False) # 获取PDF文件的页数 pageNum = len(pdf_input.pages) # 读入水印pdf文件 pdf_watermark = PdfReader(open(pdf_file_mark, 'rb'), strict=False) # 给每一页打水印 for i in range(pageNum): page = pdf_input.pages[i] page.merge_page(pdf_watermark.pages[0]) page.compress_content_streams() # 压缩内容 pdf_output.add_page(page) pdf_output.write(open(pdf_file_out, 'wb')) if __name__ == '__main__': pdf_file_in = 'test.pdf' pdf_file_out = 'out2.pdf' pdf_file_mark = create_watermark('爱看书的小沐') add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out) 添加的水印的pdf如下: 在这里插入图片描述 在这里插入图片描述 结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3