<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
小屌絲:魚哥,最近有點不像話了。
小魚:嗯?? 啥個意思嘛~
小屌絲:一週了,沒分享小知識了。
小魚:就因為這個??
小屌絲:那是,我這麼愛學習的人。
小魚:怕是你有什麼事情解決不了,想到我了吧?
小屌絲:呵 ~ 笑話 ~ 我 能有…什…麼…事情…
小魚:說吧,
小屌絲:這可是你讓我說的,我可沒主動要問的!
小魚:說吧,咋還磨磨唧唧了呢
小屌絲:我在某站下載的pfd檔案,有水印,如何去掉啊?
小魚:我突然想起來,PPT還沒寫完。
小屌絲:我家樓下剛開一個燒烤店,據說還不錯!
小魚:PPT寫不完,可以晚上寫,助人為樂讓我更快樂。
在上一篇博文,我們知道了如何給pdf檔案新增水印,
而本篇,我們就給pdf去水印
如果不知道如何新增水印,就看這篇:2行Python程式碼實現給pdf檔案新增水印
小屌絲:你這新增完水印,又去除水印,你這是鬧哪樣??
小魚:我喜歡,我稀罕,我樂意!!
去除方法:
1、用 PyMuPDF 開啟 pdf 檔案,將 pdf 的每一頁都轉換為圖片 pixmap,
2、pixmap 有它自己的 RGB,只需要將 pdf 水印中的 RGB 改為(255, 255, 255),並儲存圖片
3、按照生成的圖片,插入到pdf檔案中
因為pfd檔案無法直接去除水印,需要先將pfd檔案轉換成圖片,在逐一對圖片進行水印去除操作,最後在把圖片插入到pdf檔案中
1、先檢視PDF檔案中的水印rgb值是多少
可以看到,RGB(179,179,179),因為這裡要的是RGB色值總和,所以我們就認為,超過510,就認為是水印。
敲黑板
2、pdf轉換成圖片,並去除水印
程式碼範例:
# -*- coding:utf-8 -*- # @Time : 2022-02-23 # @Author : carl_DJ from PIL import Image from itertools import product import fitz # 去除pdf的水印 def remove_pdfwatermark(): #開啟源pfd檔案 pdf_file = fitz.open("跟小魚學習去水印.pdf") #page_no 設定為0 page_no = 0 #page在pdf檔案中遍歷 for page in pdf_file: #獲取每一頁對應的圖片pix (pix物件類似於我們上面看到的img物件,可以讀取、修改它的 RGB) #page.get_pixmap() 這個操作是不可逆的,即能夠實現從 PDF 到圖片的轉換,但修改圖片 RGB 後無法應用到 PDF 上,只能輸出為圖片 pix = page.get_pixmap() #遍歷圖片中的寬和高,如果畫素的rgb值總和大於510,就認為是水印,轉換成255,255,255-->即白色 for pos in product(range(pix.width), range(pix.height)): if sum(pix.pixel(pos[0], pos[1])) >= 510: pix.set_pixel(pos[0], pos[1], (255, 255, 255)) #儲存去掉水印的截圖 pix.pil_save(f"./{page_no}.png", dpi=(30000, 30000)) #列印結果 print(f'第 {page_no} 頁去除完成') page_no += 1 if __name__ == '__main__': remove_pdfwatermark()
執行完成,
檢視生成圖片:
檢檢視片內容:
3、圖片轉為pdf
程式碼範例:
# -*- coding:utf-8 -*- # @Time : 2022-02-23 # @Author : carl_DJ from PIL import Image from itertools import product import fitz ''' 圖片轉為pdf''' #圖片所在的資料夾 pic_dir = 'D:Projectwatemark' pdf = fitz.open() #圖片數位檔案先轉換成int型別進行排序 img_files = sorted(os.listdir(pic_dir), key=lambda x: int(str(x).split('.')[0])) for img in img_files: print(img) imgdoc = fitz.open(pic_dir + '/' + img) #將開啟後的圖片轉成單頁pdf pdfbytes = imgdoc.convertToPDF() imgpdf = fitz.open("pdf", pdfbytes) #將單頁pdf插入到新的pdf檔案中 pdf.insertPDF(imgpdf) pdf.save("跟小魚學習去水印_完成.pdf") pdf.close()
執行程式碼,
檢視生成的pdf檔案
上面的內容都瞭解以後,我們就整合程式碼,直接執行就可以了。
# -*- coding:utf-8 -*- # @Time : 2022-02-23 # @Author : carl_DJ from PIL import Image from itertools import product import fitz # 去除pdf的水印 def remove_pdfwatermark(): #開啟源pfd檔案 pdf_file = fitz.open("跟小魚學習去水印.pdf") #page_no 設定為0 page_no = 0 #page在pdf檔案中遍歷 for page in pdf_file: #獲取每一頁對應的圖片pix (pix物件類似於我們上面看到的img物件,可以讀取、修改它的 RGB) #page.get_pixmap() 這個操作是不可逆的,即能夠實現從 PDF 到圖片的轉換,但修改圖片 RGB 後無法應用到 PDF 上,只能輸出為圖片 pix = page.get_pixmap() #遍歷圖片中的寬和高,如果畫素的rgb值總和大於510,就認為是水印,轉換成255,255,255-->即白色 for pos in product(range(pix.width), range(pix.height)): if sum(pix.pixel(pos[0], pos[1])) >= 510: pix.set_pixel(pos[0], pos[1], (255, 255, 255)) #儲存去掉水印的截圖 pix.pil_save(f"./{page_no}.png", dpi=(30000, 30000)) #列印結果 print(f'第 {page_no} 頁去除完成') page_no += 1 #去除的pdf水印新增到pdf檔案中 def pictopdf(): #水印截圖所在的資料夾 # pic_dir = input("請輸入圖片資料夾路徑:") pic_dir = 'D:Projectwatemark' pdf = fitz.open() #圖片數位檔案先轉換成int型別進行排序 img_files = sorted(os.listdir(pic_dir), key=lambda x: int(str(x).split('.')[0])) for img in img_files: print(img) imgdoc = fitz.open(pic_dir + '/' + img) #將開啟後的圖片轉成單頁pdf pdfbytes = imgdoc.convertToPDF() imgpdf = fitz.open("pdf", pdfbytes) #將單頁pdf插入到新的pdf檔案中 pdf.insertPDF(imgpdf) pdf.save("跟小魚學習去水印_完成.pdf") pdf.close() if __name__ == '__main__': remove_pdfwatermark() pictopdf()
寫到這裡,今天的分享就差不多快結束了。
需要理解的流程是,
1.pdf檔案需要先轉換成圖片,進行水印去除,
2.再轉換成pdf
3.最後插入到新的pdf檔案中。
到此這篇關於十行Python3程式碼實現去除pdf檔案水印的文章就介紹到這了,更多相關Python3去除pdf水印內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45