Python批量為PDF添加水印的代碼實現(xiàn)
嗨,各位可愛的小伙伴們!小編在此奉上今天的超級干貨:如何用Python給一大堆PDF文件添加水印。請放心,這不是在交朋友圈秀操作,而是有實際需求的哦!有時候我們需要在PDF文件上添加水印,比如“草稿”、“保密”、“審閱”等標(biāo)識,來提醒自己或他人。今天就讓我來教你如何用Python輕松搞定這件事!
首先,讓我給你看一下大致的實現(xiàn)思路,然后再附上實際代碼。
實現(xiàn)思路
1、首先,我們需要一個PDF處理的Python庫,這里我選擇了PyPDF2庫。
2、接著,我們需要讀取指定文件夾中的所有PDF文件,并對每個文件進行處理。
3、對每個PDF文件,我們會向每一頁添加水印,這里我們以我的博客名“碼無止盡”為例。當(dāng)然,你可以根據(jù)自己的需求自定義水印內(nèi)容和樣式。
4、最后,我們會將添加水印后的PDF文件保存到指定的輸出文件夾中。這樣,一大堆文件就會被我們“裝上了水印”!
是不是感覺非常有趣呢?隨我來看看實際的代碼吧!
代碼實現(xiàn)
首先,我們還是要安裝一下PyPDF2庫,它可以幫助我們處理PDF文件。在命令行中輸入以下命令進行安裝:
pip install PyPDF2
接下來,我們編寫一個簡單的Python腳本來實現(xiàn)批量添加水印的功能。請看下面的代碼:
import os
from PyPDF2 import PdfReader, PdfWriter
def add_watermark(input_pdf, output_pdf, watermark):
watermark_obj = PdfReader(watermark)
watermark_page = watermark_obj.pages[0]
pdf_reader = PdfReader(input_pdf)
pdf_writer = PdfWriter()
# 將水印添加到每一頁
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
page.merge_page(watermark_page)
pdf_writer.add_page(page)
with open(output_pdf, 'wb') as out:
pdf_writer.write(out)
def batch_add_watermark(input_folder, output_folder, watermark):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.endswith('.pdf'):
input_file = os.path.join(input_folder, filename)
output_file = os.path.join(output_folder, f'watermarked_{filename}')
add_watermark(input_file, output_file, watermark)
print(f'Watermark added to {filename} and saved as {output_file}')
# 示例用法
batch_add_watermark("C:/Users/olive/Desktop/待加水印的PDF",
"C:/Users/olive/Desktop/已加水印的PDF",
"C:/Users/olive/Desktop/水印PDF/watermark.pdf")代碼解析
在這個腳本中,我們定義了兩個函數(shù):addwatermark和batchaddwatermark。addwatermark函數(shù)負責(zé)將水印添加到單個PDF文件中,而batchaddwatermark函數(shù)則遍歷指定文件夾中的所有PDF文件,并為每個文件調(diào)用addwatermark函數(shù)。
下面給出詳細的代碼解釋:
1、add_watermark 函數(shù):
- 這個函數(shù)用來給單個PDF文件添加水印。
- 參數(shù) input_pdf 是輸入的PDF文件路徑,output_pdf 是輸出的帶有水印的PDF文件路徑,watermark 是水印PDF文件的路徑。
- 首先,它使用 PdfReader 從水印文件中讀取水印對象,并獲取水印頁面。
- 然后,使用 PdfReader 從輸入PDF文件中讀取頁面,使用 PdfWriter 來創(chuàng)建一個新的PDF寫入對象。
- 接下來,它遍歷輸入PDF文件的每一頁,將水印頁面合并到每一頁,并將頁面添加到新的PDF寫入對象中。
- 最后,它將帶有水印的PDF寫入到輸出的PDF文件中。2、batch_add_watermark 函數(shù):
- 這個函數(shù)用來批量處理文件夾中的PDF文件,給每個PDF文件添加水印并保存到指定文件夾。
- 參數(shù) input_folder 是待加水印的PDF文件所在文件夾路徑,output_folder`是已加水印的PDF文件保存的文件夾路徑,watermark 是水印PDF文件的路徑。
- 如果輸出文件夾不存在,則創(chuàng)建該文件夾。
- 然后,它遍歷輸入文件夾中的所有PDF文件,對每個文件調(diào)用 add_watermark 函數(shù)來添加水印,并保存帶有水印的PDF文件到輸出文件夾中。
激動人心的測試
現(xiàn)在要進入激動人心的代碼測試階段了,我們先準(zhǔn)備好待加水印的一批PDF文檔:

我們再準(zhǔn)備一個帶有水印的PDF文檔:

打開這個水印文檔給大家看一下:

接著,修改我們的測試代碼,記得改成你自己的文件目錄:
# 示例用法
batch_add_watermark("C:/Users/olive/Desktop/待加水印的PDF",
"C:/Users/olive/Desktop/已加水印的PDF",
"C:/Users/olive/Desktop/水印PDF/watermark.pdf")然后,運行我們的代碼,很快就生成了加了水印后的PDF:

我們隨便打開一個文件,看一下效果吧:

非常完美,正是我們想要的效果!
總結(jié)
嗯哼,今天的分享就到這里啦!希望通過這篇博客文章,你能領(lǐng)略到Python的魔法之處,以及學(xué)到一個有趣且實用的小技巧。無論是“寵物私密日記”還是“公司保密文件”,給PDF添加水印都能事半功倍哦!
以上就是Python批量為PDF添加水印的代碼實現(xiàn)的詳細內(nèi)容,更多關(guān)于Python PDF添加水印的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pytorch深度神經(jīng)網(wǎng)絡(luò)入門準(zhǔn)備自己的圖片數(shù)據(jù)
這篇文章主要為大家介紹了pytorch深度神經(jīng)網(wǎng)絡(luò)入門準(zhǔn)備自己的圖片數(shù)據(jù)示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
使用Python實現(xiàn)快速復(fù)制或剪切文件列表中的所有文件
在程序開發(fā)的過程中,處理文件是我們?nèi)粘9ぷ髦幸粋€很重要的環(huán)節(jié),所以這篇文章小編就來和大家一起聊聊如何用Python來快速復(fù)制或剪切一個文件列表中的所有文件吧2025-04-04
Pytorch實現(xiàn)tensor序列化和并行化的示例詳解
這篇文章主要介紹了Pytorch實現(xiàn)tensor序列化和并行化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的同學(xué)們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
Python3實現(xiàn)的回文數(shù)判斷及羅馬數(shù)字轉(zhuǎn)整數(shù)算法示例
這篇文章主要介紹了Python3實現(xiàn)的回文數(shù)判斷及羅馬數(shù)字轉(zhuǎn)整數(shù)算法,涉及Python數(shù)值運算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
django獲取from表單multiple-select的value和id的方法
今天小編就為大家分享一篇django獲取from表單multiple-select的value和id的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解
今天小編就為大家分享一篇pytorch中交叉熵損失(nn.CrossEntropyLoss())的計算過程詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01

