Python批量為PDF添加水印的代碼實(shí)現(xiàn)
嗨,各位可愛(ài)的小伙伴們!小編在此奉上今天的超級(jí)干貨:如何用Python給一大堆PDF文件添加水印。請(qǐng)放心,這不是在交朋友圈秀操作,而是有實(shí)際需求的哦!有時(shí)候我們需要在PDF文件上添加水印,比如“草稿”、“保密”、“審閱”等標(biāo)識(shí),來(lái)提醒自己或他人。今天就讓我來(lái)教你如何用Python輕松搞定這件事!
首先,讓我給你看一下大致的實(shí)現(xiàn)思路,然后再附上實(shí)際代碼。
實(shí)現(xiàn)思路
1、首先,我們需要一個(gè)PDF處理的Python庫(kù),這里我選擇了PyPDF2庫(kù)。
2、接著,我們需要讀取指定文件夾中的所有PDF文件,并對(duì)每個(gè)文件進(jìn)行處理。
3、對(duì)每個(gè)PDF文件,我們會(huì)向每一頁(yè)添加水印,這里我們以我的博客名“碼無(wú)止盡”為例。當(dāng)然,你可以根據(jù)自己的需求自定義水印內(nèi)容和樣式。
4、最后,我們會(huì)將添加水印后的PDF文件保存到指定的輸出文件夾中。這樣,一大堆文件就會(huì)被我們“裝上了水印”!
是不是感覺(jué)非常有趣呢?隨我來(lái)看看實(shí)際的代碼吧!
代碼實(shí)現(xiàn)
首先,我們還是要安裝一下PyPDF2庫(kù),它可以幫助我們處理PDF文件。在命令行中輸入以下命令進(jìn)行安裝:
pip install PyPDF2
接下來(lái),我們編寫一個(gè)簡(jiǎn)單的Python腳本來(lái)實(shí)現(xiàn)批量添加水印的功能。請(qǐng)看下面的代碼:
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()
# 將水印添加到每一頁(yè)
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")代碼解析
在這個(gè)腳本中,我們定義了兩個(gè)函數(shù):addwatermark和batchaddwatermark。addwatermark函數(shù)負(fù)責(zé)將水印添加到單個(gè)PDF文件中,而batchaddwatermark函數(shù)則遍歷指定文件夾中的所有PDF文件,并為每個(gè)文件調(diào)用addwatermark函數(shù)。
下面給出詳細(xì)的代碼解釋:
1、add_watermark 函數(shù):
- 這個(gè)函數(shù)用來(lái)給單個(gè)PDF文件添加水印。
- 參數(shù) input_pdf 是輸入的PDF文件路徑,output_pdf 是輸出的帶有水印的PDF文件路徑,watermark 是水印PDF文件的路徑。
- 首先,它使用 PdfReader 從水印文件中讀取水印對(duì)象,并獲取水印頁(yè)面。
- 然后,使用 PdfReader 從輸入PDF文件中讀取頁(yè)面,使用 PdfWriter 來(lái)創(chuàng)建一個(gè)新的PDF寫入對(duì)象。
- 接下來(lái),它遍歷輸入PDF文件的每一頁(yè),將水印頁(yè)面合并到每一頁(yè),并將頁(yè)面添加到新的PDF寫入對(duì)象中。
- 最后,它將帶有水印的PDF寫入到輸出的PDF文件中。2、batch_add_watermark 函數(shù):
- 這個(gè)函數(shù)用來(lái)批量處理文件夾中的PDF文件,給每個(gè)PDF文件添加水印并保存到指定文件夾。
- 參數(shù) input_folder 是待加水印的PDF文件所在文件夾路徑,output_folder`是已加水印的PDF文件保存的文件夾路徑,watermark 是水印PDF文件的路徑。
- 如果輸出文件夾不存在,則創(chuàng)建該文件夾。
- 然后,它遍歷輸入文件夾中的所有PDF文件,對(duì)每個(gè)文件調(diào)用 add_watermark 函數(shù)來(lái)添加水印,并保存帶有水印的PDF文件到輸出文件夾中。
激動(dòng)人心的測(cè)試
現(xiàn)在要進(jìn)入激動(dòng)人心的代碼測(cè)試階段了,我們先準(zhǔn)備好待加水印的一批PDF文檔:

我們?cè)贉?zhǔn)備一個(gè)帶有水印的PDF文檔:

打開(kāi)這個(gè)水印文檔給大家看一下:

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

我們隨便打開(kāi)一個(gè)文件,看一下效果吧:

非常完美,正是我們想要的效果!
總結(jié)
嗯哼,今天的分享就到這里啦!希望通過(guò)這篇博客文章,你能領(lǐng)略到Python的魔法之處,以及學(xué)到一個(gè)有趣且實(shí)用的小技巧。無(wú)論是“寵物私密日記”還是“公司保密文件”,給PDF添加水印都能事半功倍哦!
以上就是Python批量為PDF添加水印的代碼實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python PDF添加水印的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計(jì)概述
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計(jì),簡(jiǎn)單描述了Python企業(yè)編碼生成系統(tǒng)的功能、結(jié)構(gòu)與相關(guān)編碼實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07
python項(xiàng)目報(bào)錯(cuò):bs4.FeatureNotFound:?Couldn‘t?find?a?tree?bu
這篇文章主要給大家介紹了python項(xiàng)目報(bào)錯(cuò):bs4.FeatureNotFound:?Couldn‘t?find?a?tree?builder?with?the?features?you?requests的解決方式,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
請(qǐng)不要重復(fù)犯我在學(xué)習(xí)Python和Linux系統(tǒng)上的錯(cuò)誤
本人已經(jīng)在運(yùn)維行業(yè)工作了將近十年,我最早接觸Linux是在大二的樣子,那時(shí)候只追求易懂,所以就選擇了Ubuntu作為學(xué)習(xí)、使用的對(duì)象,它簡(jiǎn)單、易用、好操作、界面絢麗,對(duì)于想接觸Linux的新手來(lái)說(shuō)是非常不錯(cuò)的2016-12-12
django 數(shù)據(jù)庫(kù)返回queryset實(shí)現(xiàn)封裝為字典
這篇文章主要介紹了django 數(shù)據(jù)庫(kù)返回queryset實(shí)現(xiàn)封裝為字典,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

