使用PyMuPDF添加PDF水印

这篇具有很好参考价值的文章主要介绍了使用PyMuPDF添加PDF水印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用Python添加PDF水印的博客文章。
C:\pythoncode\new\pdfwatermark.py
使用PyMuPDF添加PDF水印,python,wxpython,pymupdf,watermark
使用PyMuPDF添加PDF水印,python,wxpython,pymupdf,watermark

使用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 fitz

class 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文件。文章来源地址https://www.toymoban.com/news/detail-672114.html

到了这里,关于使用PyMuPDF添加PDF水印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python自动化小技巧23——PDF文件拆分为单独页面(PyMuPDF)

    其实编辑PDF用Adobe就行,它功能超级齐全,可是这玩意要收费...去弄免费破解版,找资源又得半天,所以用python来拆分PDF文件吧,可以批量化处理。 至于为什么不用WPS.....别问,问就是不想开会员。 脚本代码 先安装PyMuPDF库, 代码:  把输入路径和输出路径都改一下就行了,整

    2024年02月07日
    浏览(64)
  • PyMuPDF`库实现PDF旋转功能

    本文介绍了一个简单的Python应用程序,用于将PDF文件转换为旋转90度的PDF文件。主要用于csdn网站中导出的博客pdf是横向的,看起来不是很方便,才想到用python编制一个将pdf从横向转为纵向的功能。 该PDF转换工具具有以下功能: 选择PDF文件:通过点击“选择文件”按钮,用户

    2024年02月12日
    浏览(47)
  • 工具分享 | PDF文档解析工具PyMuPDF

    1 需求描述 最近工作需要 从PDF文档中按照章节解析出对应的文本和图片(后续可能还会有表格) ,经过调研,找到了一个功能强大的解析工具MuPDF,对应的Python包是 PyMuPDF 。本篇博客记录使用它来实现具体功能。 官方文档:https://pymupdf.readthedocs.io/en/latest/index.html 2 利用书签中标

    2024年02月11日
    浏览(102)
  • Aspose.Pdf使用教程:在PDF文件中添加水印

    Aspose.PDF  是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。本文将为你

    2024年02月01日
    浏览(61)
  • 使用itext7为pdf文档添加水印

    iText7是一款功能强大的开源PDF处理库,用于创建、编辑和处理PDF文档。相比于iTextSharp,iText7具有更先进的功能和更好的性能。 添加水印是iText7的一个常见应用场景。水印可以用于保护文档的版权,标识文档的状态或来源等。使用iText7添加水印可以通过以下步骤实现: 导入

    2024年04月22日
    浏览(32)
  • Python中的PDF文本提取:使用fitz和wxPython库(带进度条)

    引言: 处理大量PDF文档的文本提取任务可能是一项繁琐的工作。本文将介绍一个使用Python编写的工具,可通过简单的操作一键提取大量PDF文档中的文本内容,极大地提高工作效率。 在这个示例中,我们创建了一个 wx.ProgressDialog 对象,用于显示提取进度。在提取每一页的文本

    2024年02月14日
    浏览(55)
  • AttributeError: ‘Document‘ object has no attribute ‘pageCount‘ PyMuPDF库

    这可能是由于PyMuPDF库更新导致的,里面的一些函数名发生了变化   将  pageCount改为 page_count 将preRotate改为prerotate 将getPixmap改为get_pixmap 将writePNG改为_writeIMG   或者直接安装老版本的这个库,也能解决一切问题      

    2024年02月10日
    浏览(47)
  • Vue使用pdf-lib为文件流添加水印并预览

    之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vue使用vue-pdf实现PDF文件预览,使用pdfobject预览pdf。这次项目中又要预览pdf了,要求还要加水印,做的时候又发现了一种预览pdf的方式,这种方式我觉的更好一些,并且还有个要求就是添加水印,当然水印后端也是可以加

    2024年02月02日
    浏览(55)
  • 前端使用vue-pdf、pdf-lib、canvas 给PDF文件添加水印,并预览与下载

    原理就是给显示pdf 的容器增加一层水印遮罩层 下载: 通过url获取pdf文件的arrarybuffer文件流 将arraybuffer数据转成pdf文档 添加水印字体(内置/自定义) 为每页pdf添加文字水印 保存pdf文件的unit64Arrary文件流 预览: 创建canvas容器(用于显示水印文字) 创建水印canvas 将水印canv

    2024年01月24日
    浏览(58)
  • Vue3前端h5移动端页面预览PDF使用pdfjs-dist,添加自定义文本水印

    pnpm i pdfjs-dist@2.5.207

    2024年01月18日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包