Python:快速去除PDF水印

简介: Python:快速去除PDF水印

本文分享一个快速去除PDF水印的小程序,亲测有效。

写一点关于使用的说明:

程序最后的“if __name__ == '__main__‘: ”部分,这里边有两个自定义函数,分别是pdf_image和combine_imgs_pdf,下面作出解释说明:

       ①第一个函数是用来提取原PDF中的每一页,并且去除对应的水印,然后输出到指定路径。第一个函数需要传入五个参数,分别是原PDF的绝对路径、提取的图片想要输出的绝对路径、横轴像素点、纵轴像素点、旋转。

       横纵轴像素点一般选相同即可,想要更加高清可设置更大的数字(但是运行时间也会随之边长),一般选取3和3即可,清晰度完全足够。旋转选择0(提取出来的图片不旋转)。

       ②第二个函数是把第一个函数已经提取出来的图片(已经去除水印并且高清提取)重新合成一个PDF,并且输出到一个新的路径(此处依然需要填写绝对路径)

 

需要注意的点是:

       ①路径分隔符在程序中不能写“\",而是需要写"\\",因为\会被程序判断为转义字符

       ②pdf_image函数的第二个参数,也就是图中的Picture_File,该绝对路径的末尾需要多加“\\”,例如"D:\\123\\"。

 

 

下面附上完整代码:

1. # -*- coding: utf-8 -*-
2. # @Author:︶ㄣ释然
3. # @Time: 2022/11/19 0:40
4. from itertools import product
5. from PIL import Image
6. import os
7. import time
8. import fitz
9. 
10. 
11. def pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):
12.     pdf = fitz.open(pdfPath)
13. for pg in range(0, pdf.pageCount):
14.         page = pdf[pg]
15.         trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
16.         pm = page.getPixmap(matrix=trans, alpha=False)
17. for pos in product(range(pm.width), range(pm.height)):
18.             rgb = pm.pixel(pos[0], pos[1])
19. if (sum(rgb) >= 620):
20.                 pm.set_pixel(pos[0], pos[1], (255, 255, 255))
21. print(f"第{pg}页水印去除完成")
22.         pm.writePNG(imgPath + str(pg) + ".png")
23.     pdf.close()
24. 
25. 
26. def combine_imgs_pdf(folder_path, pdf_file_path):
27.     files = os.listdir(folder_path)
28.     png_files = []
29.     sources = []
30. for file in files:
31. if 'png' in file or 'jpg' in file:
32.             png_files.append(folder_path + file)
33.     png_files.sort()
34. 
35.     output = Image.open(png_files[0])
36.     png_files.pop(0)
37. for file in png_files:
38.         png_file = Image.open(file)
39. if png_file.mode == "RGB":
40.             png_file = png_file.convert("RGB")
41.         sources.append(png_file)
42.     output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
43. 
44. 
45. if __name__ == '__main__':
46.     start = time.perf_counter()
47.     PDF_File = r""
48.     Picture_File = r""
49.     outPut = r""
50.     pdf_image(PDF_File, Picture_File, 3, 3, 0)
51.     combine_imgs_pdf(Picture_File, outPut)
52.     end = time.perf_counter()
53. print("成功去除水印\n用时:%s秒" % (end - start))
相关文章
|
2月前
|
Python
Python办公自动化:删除任意页数pdf页面
Python办公自动化:删除任意页数pdf页面
61 1
Python办公自动化:删除任意页数pdf页面
|
30天前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
|
30天前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
|
1月前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据
|
1月前
|
算法 Java 程序员
【福利😍】2024年最新103本互联网大厂程序员编程书合集【高清文字版无水印pdf】
推荐优质编程电子书资源,涵盖Python入门、算法设计、Java高并发、Docker、机器学习等领域,适合从小白到高级开发者。书籍包括《编程小白的第一本Python入门书》、《编程珠玑》等,助你提升技能,紧跟技术前沿,在职场中脱颖而出。下载地址含国内外网盘链接,更多资源可访问资料吧网站获取。
112 0
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
|
2月前
|
数据安全/隐私保护 Python
Python办公自动化:给pdf加水印
Python办公自动化:给pdf加水印
29 0
|
2月前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
22 0
|
3月前
|
Python
Python也可以合并和拆分PDF,批量高效!
Python也可以合并和拆分PDF,批量高效!
|
3月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
238 0