去水印Python 脚本 [pdf -pdf]

562 阅读1分钟

命名规则

类型命名规则举例
模块全小写字母,简单有意义,根据需要使用下划线math
函数名全小写字母,根据需要使用下划线remove_pdf()
变量名全小写字母,根据需要使用下划线my_var
类名采用驼峰法命名规则,即多个单词组成名称,每个单词除第一个字母大写外,其余的字母均小写MyClass
常量名全小写字母,根据需要使用下划线TAX_RATE

python中 r'', b'', u'', f'' 的含义

r"" 的作用是去除转义字符
save_dir = r'C:\Users\10616814\Desktop\资料_ZXY\PMP'f"" 在字符串中支持大括号
f"d:/pdf_images/{page_num}.png"u"" 含有中文字符组成的字符串
后面的字符串以Uniconde 格式进行编码

脚本结构

# 引用部分
import os 
import fitz
from PIL import Image
from itertools import product

#编写脚本函数 
# PDF 去掉水印会被转化为图片
# 图片 转化为PDF
def remove_pdf(pdf_dir,save_dir,file_name):
    page_num = 0
    pdf = fitz.open(pdf_dir)
    pdf2 = fitz.open()
    
    for page in pdf:
        pixmap = page.get_pixmap()
        for pos in product(range(pixmap.width), range(pixmap.height)):
            rgb = pixmap.pixel(pos[0], pos[1])
            if(sum(rgb) >= 620):
                pixmap.set_pixel(pos[0], pos[1], (255, 255, 255))

        dir = save_dir +'/' + str(page_num) + ".png"

        pixmap.pil_save(dir)
        print(f"第{page_num}水印去除完成")
        page_num = page_num + 1

        imgdoc = fitz.open(dir)
        os.remove(dir)
        pdfbytes = imgdoc.convert_to_pdf()
        imgpdf = fitz.open("pdf", pdfbytes)
        pdf2.insert_pdf(imgpdf)
    
   pdf2.save(save_dir +'/' + file_name)
   pdf2.close()

     
# main 函数
if __name__ == '__main__':
	pdf_dir = r'C:\Users\10616814\Desktop\资料_ZXY\PMP\每日一练-现代卓越.pdf'
	save_dir = r'C:\Users\10616814\Desktop\资料_ZXY\PMP\TEMPSAVE'
	file_name = r'demo.pdf'
	
	remove_pdf(pdf_dir,save_dir,file_name)