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月前
|
数据挖掘 程序员 数据安全/隐私保护
解锁PDF潜力:9个Python库让你的文档处理更高效
程序员晚枫分享了Python处理PDF的9个第三方库,包括PyPDF2、pdfrw、ReportLab、pikepdf、pdfplumber、pdfminer.six、PyMuPDF、popdf和borb,各具优缺点。选择时需考虑应用场景、功能需求、库的维护状态和开源协议。例如,pdfplumber擅长内容提取,而ReportLab和PyMuPDF适用于创建和修改内容。
164 7
|
2月前
|
Python
小白入门必备!计科教授的Python精要参考PDF开放下载!
随着互联网产业的高速发展,在网络上早已积累了极其丰富的Python学习资料,任何人都可以基于这些资源,自学掌握 Python。 但实际上,网络上充斥的资源太多、太杂且不成体系,在没有足够的编程/工程经验之前,仅靠“看”线上资源自学,的确是一件非常困难的事。
|
2月前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
2月前
|
数据安全/隐私保护 Python
python 图片打水印 透明图片合并
python 图片打水印 透明图片合并
21 1
小白入门必备!计算机科学教程的Python精要参考PDF开放下载!
随着互联网产业的高速发展,在网络上早已积累了极其丰富的Python学习资料,任何人都可以基于这些资源,自学掌握 Python。 但实际上,网络上充斥的资源太多、太杂且不成体系,在没有足够的编程/工程经验之前,仅靠“看”线上资源自学,的确是一件非常困难的事。
|
2月前
|
Python
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
|
2月前
|
Python
【Python3 查询手册学习】,完整版PDF开放下载_python速查手册·模块卷(全彩版) pdf(1)
【Python3 查询手册学习】,完整版PDF开放下载_python速查手册·模块卷(全彩版) pdf(1)
|
2月前
|
前端开发 文件存储 Python
python之xhtml2pdf: HTML转PDF工具示例详解
python之xhtml2pdf: HTML转PDF工具示例详解
95 0
|
6天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
13 1
|
10天前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
16 1

相关实验场景

更多