pdf去掉水印的方法(pdf格式去除水印的小妙招) | 滔搏网-j9九游会老哥交流必备社区

网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比如下面的图片就是在 pdf 文件上截取出来的。

pdf去掉水印的方法(pdf格式去除水印的小妙招)

pil:python imaging library 是 python 上非常强大的图像处理标准库,但是只能支持 python 2.7,于是就有志愿者在 pil 的基础上创建了支持 python 3的 pillow,并加入了一些新的特性。

pip install pillow

pymupdf 可以用 python 访问扩展名为*.pdf、.xps、.oxps、.epub、.cbz或*.fb2的文件。还支持了许多流行的图像格式,包括多页tiff图像。

pip install pymupdf

导入需要用到的模块

from pil import image
from itertools import product
import fitz
import os

pdf 去水印的原理和图片去水印的原理差不多,小编先从去除上面那张图片的水印开始。

学过计算机的小伙伴们都知道 ,计算机中用 rgb 代表红绿蓝,用 (255, 0, 0) 表示红色,(0, 255, 0) 表示绿色,(0, 0, 255) 表示蓝色,(255, 255, 255) 表示白色,(0, 0, 0) 表示黑色,去水印的原理就是将水印的颜色变成白色(255, 255, 255)。

首先获取图片宽和高,用 itertools 模块获取宽和高的笛卡尔积作为像素点。每个像素点的颜色都由 前三位的 rgb 和 第四位的 alpha 通道构成。alpha 通道不需要,只要 rgb 数据。

def remove_img():
    image_file = input("请输入图片地址:")
    img = image.open(image_file)
    width, height = img.size
    for pos in product(range(width), range(height)):
        rgb = img.getpixel(pos)[:3]
        print(rgb)

用微信截图的方式查看水印像素点的 rgb。

pdf去掉水印的方法(pdf格式去除水印的小妙招)

可以看到水印的 rgb 是 (210, 210, 210),这里用 rgb 的和超过 620 就判定是水印点,此时将像素颜色替换为白色。最后保存图片。

rgb = img.getpixel(pos)[:3]
if(sum(rgb) >= 620):
    img.putpixel(pos, (255, 255, 255))
img.save('d:/qsy.png')

示例结果:

pdf去掉水印的方法(pdf格式去除水印的小妙招)

pdf 去水印的原理和图片去水印的原理大致相同,用 pymupdf 打开 pdf 文件后,将 pdf 的每一页都转换为图片 pixmap,pixmap 有它自己的 rgb,只需要将 pdf 水印中的 rgb 改为(255, 255, 255) 最后保存为图片。

def remove_pdf():
    page_num = 0
    pdf_file = input("请输入 pdf 地址:")
    pdf = fitz.open(pdf_file);
    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))
        pixmap.pil_save(f"d:/pdf_images/{page_num}.png")
        print(f"第{page_num}水印去除完成")
        page_num = page_num   1

示例结果:

pdf去掉水印的方法(pdf格式去除水印的小妙招)

图片转 pdf 需要注意的是图片的排序,数字文件名必须先转换为 int 类型后排序。用 pymupdf 模块打开图片后将图片用 converttopdf() 函数转成单页的 pdf。插入到新的 pdf 文件中。

def pic2pdf():
    pic_dir = input("请输入图片文件夹路径:")
    
    pdf = fitz.open()
    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)  
        pdfbytes = imgdoc.converttopdf()   
        imgpdf = fitz.open("pdf", pdfbytes)
        pdf.insertpdf(imgpdf)       
    pdf.save("d:/demo.pdf")         
    pdf.close()

pdf 和图片上恼人的水印终于可以在强大的 python 面前消失了。小伙伴们学会了吗?

本文内容来自网友供稿,文章观点仅代表作者本人,本站非盈利且无偿提供信息存储空间服务,不拥有所有权,如有文章有不实信息或侵犯了您的权益,请发送邮件至 cfseo1997@163.com 反馈核实,如需转载请注明出处:https://www.taobobolive.com/20462.html

(0)
上一篇 2022年12月17日 11:52:24
下一篇 2022年12月17日 11:54:59

相关推荐

  • “圣骑士时刻准备着与未知的敌人作战,对于他们来说,对于光明的信仰就是最为坚固的盾牌,圣骑士们随时都会为了自己的坚定信仰而牺牲自己的生命。圣骑士对于信仰的专注使得他们获得对盟友进行祝…

    2023年6月17日 投稿
  • 微信不能添加好友怎么办?相信很多使用微信做运营的朋友都会遇到这样的问题。微信有自我保护功能,当你在短时间内添加太多微信好友时,微信就会提示操作过于频繁,请稍后再试。这个功能限制自己…

    2023年1月18日
  • 微信商城又可以称为微商城,微信商城是很多商家企业作为线上销售的一个平台,毕竟在微信这个这么高日活量的社交平台上,自然会有很多潜在顾客。那么如果想在微信上卖货的商家企业怎么开通微信商…

    2023年6月12日 投稿
  • 全民奇迹战士七阶武器破坏之剑加多少攻击?战士七阶单手武器 15破坏之剑加多少攻击?战士七阶单手武器破坏之剑需要多少力量多少敏捷?下面搞趣网小编带给大家关于 15破坏之剑的图文攻略:…

    2023年6月23日
  • 大学c语言用什么编程软件好(c语言新手入门代码)

    c语言基本上是大学计算机及其相关专业在大一上学期就会开的一门课程,但是很多学生就是在大一上学期期末的时候很着急,因为自己完全没有学好c语言,感觉一学期白学了,其实究其主要原因,还是…

    2023年3月16日 投稿
  • 了解如何在 linux 上使用 dnf命令安装软件包,然后下载我们的速查表,让正确的命令触手可及。 在计算机系统上安装应用程序非常简单:就是将档案(如 .zip文件)中的文件复制到…

    2023年4月5日
  • 手机usb万能驱动怎么安装(安卓usb无线网卡驱动安装教程)

    电脑无法正常识别苹果手机怎么办呢?下面小编将与大家分享一下有关苹果手机驱动安装及与ituens正常连接的方法,希望对大家能有所帮助。 方法/步骤 通常情况下,造成电脑无法正常识别苹…

    2023年3月22日 投稿
  • 电脑自动重启 有不少win 10小伙伴们在使用电脑的时候,发现电脑会莫名其妙地自动重启,遇到这样的问题该如何处理呢? 我们只需要将自动重启功能关闭即可,那么该如何关闭呢? 操作步骤…

    2023年3月21日 投稿
网站地图