看到有很多去水印的资源,但是有的方程并不适合新的python,或者转化后的清晰度太低,所以在前人的代码上改了一下,让fitz打开时存储更多信息.至于如何确定水印RGB,推荐微信截图功能,在将pdf转换成图片时可以先查看一下,我转的pdf的水印大部分的RGB加起来是631,但是边缘还是会没被去除干净,所以也可以用>=而不是==。

from itertools import product
import fitz
import os# 去除pdf的水印
def remove_pdfwatermark():#打开源pfd文件,这里将pdf和python执行文件放在同一路径下pdf_file = fitz.open("1.pdf")#建构fitz提取文件矩阵zoom=2mat=fitz.Matrix(zoom, zoom)#page_no 设置为0page_no = 0#page在pdf文件中遍历for page in pdf_file:#获取每一页对应的图片pix (pix对象类似于我们上面看到的img对象,可以读取、修改它的 RGB)#page.get_pixmap() 这个操作是不可逆的,即能够实现从 PDF 到图片的转换,但修改图片 RGB 后无法应用到 PDF 上,只能输出为图片pix = page.get_pixmap(matrix=mat)#遍历图片中的宽和高,如果像素的rgb值总和等于631,就认为是水印,转换成255,255,255-->即白色for pos in product(range(pix.width), range(pix.height)):if sum(pix.pixel(pos[0], pos[1])) == 631:pix.set_pixel(pos[0], pos[1], (255, 255, 255))#保存去掉水印的截图,在执行文件下新建名为png的文件夹pix.pil_save(f"./png/{page_no}.png", dpi=(30000, 30000))#打印结果print(f'第 {page_no} 页去除完成')page_no += 1
if __name__ == '__main__':remove_pdfwatermark()
#图片所在的文件夹
pic_dir = 'png'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)#将打开后的图片转成单页pdfpdfbytes = imgdoc.convert_to_pdf()imgpdf = fitz.open("pdf", pdfbytes)#将单页pdf插入到新的pdf文档中pdf.insert_pdf(imgpdf)
pdf.save("完成.pdf")
pdf.close()

Python去水印操作相关推荐

  1. OpenCV和Python动手操作计算机视觉学习教程

    使用OpenCV和Python进行实际操作 面向初学者的OpenCV Python动手操作计算机视觉 你会学到: NumPy基础知识 基于OpenCV的人脸检测 使用OpenCV在图像和视频上绘制形状 ...

  2. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  3. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  4. python列表操作:追加元素到列表的代码

    将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...

  5. python sqlalchemy操作SQLite

    日期转时间: from sqlalchemy import Column, Integer, String, Float, Date date = Column(Date) data="20 ...

  6. python berkeley 操作——尤其提示 需版本匹配

    python berkeley 操作 先到http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/dow ...

  7. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  8. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  9. python处理excel表格实例-通过实例学习Python Excel操作

    这篇文章主要介绍了通过实例学习Python Excel操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.python 读取Excel # -* ...

最新文章

  1. Day24--Part2-伪Ajax(iframe)
  2. 哪些云计算企业能活下来
  3. xmanager 3 远程连接REDHAT 4 桌面
  4. mysql bootstrap pxc_Mysql高可用之PXC
  5. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分
  6. oracle安装,未找到文件 F:\app\Administrator\product\11.2.0\dbhome_2\owb\external\oc4j_ap
  7. WinCE6下的kernelIoControl使用方法
  8. LeetCode 1136. 平行课程(拓扑排序)
  9. 23种设计模式之访问者模式
  10. 使用hexo创建blog
  11. LeetCode 434. Number of Segments in a String
  12. 数学公式识别:基于编码-解码模型
  13. 连续函数matlab采样,基于 MATLAB 的时域信号采样及频谱分析(转)
  14. linux六个标准目录,Linux基本目录规范——XDG
  15. TensorFlow2.0:tensorboard使用
  16. CSS 二十年发展简史
  17. Intellij Idea下tomcat设置自动编译
  18. Pytorch——计算机视觉工具包:torchvision
  19. lj245a引脚功能图_干货|教你如何看懂单片机时序图
  20. 大写金额用计算机简单些,大写一到十怎么写 数字一到十的大写怎么写(开票用的大写)...

热门文章

  1. 淘宝直通车为什么要低价引流,低价引流的原理、低价引流的具体操作
  2. 使用Xilinx XSCT工具进行烧录
  3. TA 认识 unity shader最基本的代码结构与书写01
  4. Spring父子类同属性父类属性隐藏
  5. 2022-2028全球COB摄影灯行业调研及趋势分析报告
  6. ITEXT 把表格定位在固定位置
  7. 《软件工程与实践》 |(九)软件工程新技术及体系 知识梳理
  8. 数据分析师就业前景怎么样?零基础能成为数据分析师吗?
  9. 2021年最新ABAQUS复合材料建模仿真与应用专题培训
  10. 国内常用的代理ip形式动态住宅ip和移动手机代理ip有什么区别?