欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用PyMuPDF實(shí)現(xiàn)添加PDF水印

 更新時(shí)間:2023年08月21日 08:45:23   作者:winfredzhang  
在日常工作中,我們經(jīng)常需要對(duì)PDF文件進(jìn)行處理,其中一項(xiàng)常見(jiàn)的需求是向PDF文件添加水印,本文將介紹如何使用Python編程語(yǔ)言和PyMuPDF庫(kù)在PDF文件中添加水印,感興趣的可以了解一下

效果圖

使用Python添加PDF水印的博客文章。C:\pythoncode\new\pdfwatermark.py

在日常工作中,我們經(jīng)常需要對(duì)PDF文件進(jìn)行處理。其中一項(xiàng)常見(jiàn)的需求是向PDF文件添加水印,以保護(hù)文件的版權(quán)或標(biāo)識(shí)文件的來(lái)源。本文將介紹如何使用Python編程語(yǔ)言和PyMuPDF庫(kù)在PDF文件中添加水印。

準(zhǔn)備工作

在開(kāi)始之前,確保已經(jīng)安裝了以下組件:

Python編程環(huán)境PyMuPDF庫(kù)

可以使用pip命令安裝PyMuPDF庫(kù):

pip install PyMuPDF

編寫(xiě)代碼

首先,我們需要導(dǎo)入所需的庫(kù):

import fitz

接下來(lái),我們創(chuàng)建一個(gè)函數(shù)來(lái)添加水印到PDF文件的每一頁(yè):

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)  # 設(shè)置水印的位置和大小
            page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=90)
        doc.save(output_path)
        doc.close()
        print("水印添加成功!")
    except Exception as e:
        print("添加水印時(shí)出錯(cuò):", str(e))

在上述代碼中,我們打開(kāi)PDF文件,遍歷每一頁(yè),然后使用 insert_textbox() 方法將水印添加到每一頁(yè)中。

使用示例

接下來(lái),我們可以使用上述函數(shù)來(lái)添加水印。

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

在上述示例中,我們指定了輸入PDF文件的路徑、要添加的水印文本和輸出文件的路徑。運(yùn)行代碼后,將會(huì)在輸出路徑生成帶有水印的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)
        # 創(chuàng)建選擇文件按鈕
        self.file_picker = wx.FilePickerCtrl(panel, style=wx.FLP_OPEN)
        # 創(chuàng)建水印文本輸入框
        self.watermark_text = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER)
        # 創(chuàng)建保存文件夾按鈕
        self.save_folder_picker = wx.DirPickerCtrl(panel, style=wx.DIRP_USE_TEXTCTRL)
        # 創(chuàng)建生成按鈕
        generate_button = wx.Button(panel, label='生成')
        generate_button.Bind(wx.EVT_BUTTON, self.on_generate_button_click)
        # 創(chuàng)建布局
        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), "錯(cuò)誤", wx.OK | wx.ICON_ERROR)
        else:
            wx.MessageBox("請(qǐng)選擇文件、輸入水印文本和保存文件夾!", "錯(cuò)誤", wx.OK | wx.ICON_ERROR)
if __name__ == '__main__':
    app = wx.App()
    frame = WatermarkFrame(None, "添加水印")
    frame.Show()
    app.MainLoop()

總結(jié)

通過(guò)使用Python和PyMuPDF庫(kù),我們可以輕松地向PDF文件添加水印??梢愿鶕?jù)需求定制水印的位置、大小和旋轉(zhuǎn)角度。這種方法不僅簡(jiǎn)單高效,還可以自動(dòng)化處理大量的PDF文件。

到此這篇關(guān)于Python使用PyMuPDF實(shí)現(xiàn)添加PDF水印的文章就介紹到這了,更多相關(guān)Python PyMuPDF添加PDF水印內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python常用時(shí)間操作總結(jié)【取得當(dāng)前時(shí)間、時(shí)間函數(shù)、應(yīng)用等】

    Python常用時(shí)間操作總結(jié)【取得當(dāng)前時(shí)間、時(shí)間函數(shù)、應(yīng)用等】

    這篇文章主要介紹了Python常用時(shí)間操作,包括取得當(dāng)前時(shí)間、時(shí)間函數(shù)、應(yīng)用等概念與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • Python中的二分查找Bisect庫(kù)使用實(shí)戰(zhàn)

    Python中的二分查找Bisect庫(kù)使用實(shí)戰(zhàn)

    在算法和數(shù)據(jù)結(jié)構(gòu)中,二分查找是一種高效的搜索算法,可用于有序數(shù)據(jù)集合的查找,Python的bisect庫(kù)為我們提供了便捷的二分查找實(shí)現(xiàn),本文將深入探討B(tài)isect庫(kù)的使用方法、性能優(yōu)勢(shì),并通過(guò)豐富的示例代碼展示其在實(shí)際應(yīng)用中的靈活性和效果
    2024-01-01
  • python中Pytest常用的插件

    python中Pytest常用的插件

    這篇文章主要介紹了python中Pytest常用的插件,Pytest是Python的一種單元測(cè)試框架,與unittest相比,使用起來(lái)更簡(jiǎn)潔、效率更高,也是目前大部分使用python編寫(xiě)測(cè)試用例的小伙伴們的第一選擇了
    2022-06-06
  • 關(guān)于pandas-profiling的降級(jí)之旅

    關(guān)于pandas-profiling的降級(jí)之旅

    這篇文章主要介紹了關(guān)于pandas-profiling的降級(jí)之旅,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python Tricks 使用 pywinrm 遠(yuǎn)程控制 Windows 主機(jī)的方法

    Python Tricks 使用 pywinrm 遠(yuǎn)程控制 Windows 主機(jī)的方法

    這篇文章主要介紹了Python Tricks 使用 pywinrm 遠(yuǎn)程控制 Windows 主機(jī)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python代碼覆蓋率統(tǒng)計(jì)工具coverage.py用法詳解

    Python代碼覆蓋率統(tǒng)計(jì)工具coverage.py用法詳解

    這篇文章主要介紹了Python代碼覆蓋率統(tǒng)計(jì)工具coverage.py用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài),結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中繼承、多態(tài)的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Python中Numpy和Matplotlib的基本使用指南

    Python中Numpy和Matplotlib的基本使用指南

    numpy庫(kù)處理的最基礎(chǔ)數(shù)據(jù)類(lèi)型是由同種元素構(gòu)成的多維數(shù)組(ndarray),而matplotlib 是提供數(shù)據(jù)繪圖功能的第三方庫(kù),其pyplot子庫(kù)主要用于實(shí)現(xiàn)各種數(shù)據(jù)展示圖形的繪制,這篇文章主要給大家介紹了關(guān)于Python中Numpy和Matplotlib的基本使用指南,需要的朋友可以參考下
    2021-11-11
  • 基于PyTorch的permute和reshape/view的區(qū)別介紹

    基于PyTorch的permute和reshape/view的區(qū)別介紹

    這篇文章主要介紹了基于PyTorch的permute和reshape/view的區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python中的 is 和 == 以及字符串駐留機(jī)制詳解

    Python中的 is 和 == 以及字符串駐留機(jī)制詳解

    這篇文章主要介紹了Python中的 is 和 == 以及字符串駐留機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論