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))
相关文章
|
4月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
213 0
|
3月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
711 0
|
4月前
|
程序员 数据安全/隐私保护 Python
1行Python代码,实现PDF的加密、解密
程序员晚枫分享使用python-office库实现PDF批量加密与解密的新方法。只需一行代码,即可完成单个或多个PDF文件的加密、解密操作,支持文件路径与正则筛选,适合自动化办公需求。更新至最新版,适配性更佳,操作更简单。
184 8
1行Python代码,实现PDF的加密、解密
|
5月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
4月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
985 0
|
5月前
|
前端开发 安全 Java
办公自动化必修课:用Python打造PDF全能处理工具
在职场中,PDF处理常令人崩溃:拆分、合并、加密等问题严重影响效率。本文教你用Python打造一个包含拆分、合并、加密、水印四大功能的PDF工具箱,通过实战代码提升办公自动化水平,让文档操作像拼乐高一样简单高效。
179 0
|
6月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
8月前
|
文字识别 程序员 UED
Python + 腾讯云,多页PDF发票识别一键搞定!
程序员晚枫团队推出了基于Python和腾讯云的多页PDF发票识别功能!通过一行代码即可实现整本PDF发票的高效识别,并直接导出为Excel文件,极大提升工作效率。此次更新修复了仅识别第一页的bug,支持多页PDF完整识别。未来还将拓展更多票据类型、优化速度并加强平台合作。欢迎用户体验并提出建议,共同推动开源项目poocr的成长与进化!
274 7
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
279 3
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
318 1

推荐镜像

更多