Python使用PyMuPDF實現(xiàn)添加PDF水印
效果圖
使用Python添加PDF水印的博客文章。C:\pythoncode\new\pdfwatermark.py
在日常工作中,我們經(jīng)常需要對PDF文件進(jìn)行處理。其中一項常見的需求是向PDF文件添加水印,以保護(hù)文件的版權(quán)或標(biāo)識文件的來源。本文將介紹如何使用Python編程語言和PyMuPDF庫在PDF文件中添加水印。
準(zhǔn)備工作
在開始之前,確保已經(jīng)安裝了以下組件:
Python編程環(huán)境PyMuPDF庫
可以使用pip命令安裝PyMuPDF庫:
pip install PyMuPDF
編寫代碼
首先,我們需要導(dǎo)入所需的庫:
import fitz
接下來,我們創(chuàng)建一個函數(shù)來添加水印到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) # 設(shè)置水印的位置和大小 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()
方法將水印添加到每一頁中。
使用示例
接下來,我們可以使用上述函數(shù)來添加水印。
pdf_path = "input.pdf" watermark_text = "我的水印" output_path = "output.pdf" add_watermark_to_pdf(pdf_path, watermark_text, output_path)
在上述示例中,我們指定了輸入PDF文件的路徑、要添加的水印文本和輸出文件的路徑。運(yùn)行代碼后,將會在輸出路徑生成帶有水印的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), "錯誤", 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()
總結(jié)
通過使用Python和PyMuPDF庫,我們可以輕松地向PDF文件添加水印??梢愿鶕?jù)需求定制水印的位置、大小和旋轉(zhuǎn)角度。這種方法不僅簡單高效,還可以自動化處理大量的PDF文件。
到此這篇關(guān)于Python使用PyMuPDF實現(xiàn)添加PDF水印的文章就介紹到這了,更多相關(guān)Python PyMuPDF添加PDF水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python常用時間操作總結(jié)【取得當(dāng)前時間、時間函數(shù)、應(yīng)用等】
這篇文章主要介紹了Python常用時間操作,包括取得當(dāng)前時間、時間函數(shù)、應(yīng)用等概念與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Python Tricks 使用 pywinrm 遠(yuǎn)程控制 Windows 主機(jī)的方法
這篇文章主要介紹了Python Tricks 使用 pywinrm 遠(yuǎn)程控制 Windows 主機(jī)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Python代碼覆蓋率統(tǒng)計工具coverage.py用法詳解
這篇文章主要介紹了Python代碼覆蓋率統(tǒng)計工具coverage.py用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11Python面向?qū)ο蟪绦蛟O(shè)計之繼承、多態(tài)原理與用法詳解
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計之繼承、多態(tài),結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計中繼承、多態(tài)的相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-03-03Python中Numpy和Matplotlib的基本使用指南
numpy庫處理的最基礎(chǔ)數(shù)據(jù)類型是由同種元素構(gòu)成的多維數(shù)組(ndarray),而matplotlib 是提供數(shù)據(jù)繪圖功能的第三方庫,其pyplot子庫主要用于實現(xiàn)各種數(shù)據(jù)展示圖形的繪制,這篇文章主要給大家介紹了關(guān)于Python中Numpy和Matplotlib的基本使用指南,需要的朋友可以參考下2021-11-11基于PyTorch的permute和reshape/view的區(qū)別介紹
這篇文章主要介紹了基于PyTorch的permute和reshape/view的區(qū)別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python中的 is 和 == 以及字符串駐留機(jī)制詳解
這篇文章主要介紹了Python中的 is 和 == 以及字符串駐留機(jī)制詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-06-06