当前位置:首页 > 知识分享 > 正文内容

今日知识分享怎么去除pdf文件的水印文字

2年前 (2023-05-27)知识分享78

网上下载的 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

获取图片的 RGB

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。

可以看到水印的 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 去水印的原理和图片去水印的原理大致相同,用 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 需要注意的是图片的排序,数字文件名必须先转换为 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 面前消失了。小伙伴们学会了吗?

扫描二维码推送至手机访问。

版权声明:本文由阿龙玩站网发布,如需转载请注明出处。

本文链接:https://www.longge2021.cn/zhideyikan/26321.html

分享给朋友:

“今日知识分享怎么去除pdf文件的水印文字” 的相关文章

怎样鉴别蟹苗质量好坏,怎样鉴别活蟹的质量

怎样鉴别蟹苗质量好坏,怎样鉴别活蟹的质量

1 问 如果是人工繁殖的蟹苗,应询问蟹苗的日龄、饵料投喂情况、淡化处理过程以及池内蟹苗的密度。饲养管理较好的蟹苗,日龄一般在4~5天,经过4~5天的淡化处理后,池内蟹苗的密度较大,且比较活跃。如果购买的是天然蟹苗,则要了解蟹苗捕捞的天数及淡化处理情况;如未经淡化处理千万不要购买。 2 称 将准备出...

目前能打网络电话的软件(网络电话哪个好用又实惠)

目前能打网络电话的软件(网络电话哪个好用又实惠)

“什么网络电话软件靠谱?”,很多有通话需求的都有这疑问,小编觉得现阶段打电话不再只追求便宜了,通话软件APP在打电话和通话的过程中首先要解决的是通话质量,电话必须要打得通,音质 “什么网络电话软件靠谱?”,很多有通话需求的都有这疑问,小编觉得现阶段打电话不再只追求便宜了,通话软件APP在打...

seo优化网站排名该怎么做(分享做seo优化网站排名的4种方法)

seo优化网站排名该怎么做(分享做seo优化网站排名的4种方法)

随着搜索引擎系统的不断优化和完善,在当前互联网用户数量和使用频率不断增加的情况下,站点也越来越多的情况下,seo优化如何做好网站排名,让用户更能注意到我们呢?接下来小编就跟大家分 随着搜索引擎系统的不断优化和完善,在当前互联网用户数量和使用频率不断增加的情况下,站点也越来越多的情况下,seo优化...

seo优化排名推广的方法有哪些(介绍seo优化排名推广的4种方法)

seo优化排名推广的方法有哪些(介绍seo优化排名推广的4种方法)

网站新手入行时,在接手一个网站项目的时候往往不知道怎么入手,可能大多数优化人员都会首先想到挖掘关键词,采集文章伪原创,布局外链等等一些SEO职能范畴之内的具体事务,这些仅仅属于在S 网站新手入行时,在接手一个网站项目的时候往往不知道怎么入手,可能大多数优化人员都会首先想到挖掘关键词,采集文章伪原创...

南航飞机座位选择哪个位置好(飞机31到55排哪个位置好)

南航飞机座位选择哪个位置好(飞机31到55排哪个位置好)

费尽千辛万苦,好不容易买到心仪的机票,结果座位没选好,整个人的心情瞬间down掉,如何能把经济舱坐出头等舱的姿态?▲经济舱前排及紧急出口排座位最佳就排号来说,一般第1-10行的座位为头等舱、第11-30行是商务舱、第31 费尽千辛万苦,好不容易买到心仪的机票,结果座位没选好,整个人的心情瞬间dow...

360安全浏览器兼容模式怎么设置在哪里(360浏览器兼容模式设置不了)

360安全浏览器兼容模式怎么设置在哪里(360浏览器兼容模式设置不了)

在使用浏览器的过程中,可能会遇到需要切换至兼容模式才能打开想要页面的情况。现在很多浏览器都自带防毒功能,可能会把很多元件直接当成病毒自动阻挡,导致一些元素在普通模式下无法显示。本文将根据大家常用的浏览器提供相应的浏览器兼 在使用浏览器的过程中,可能会遇到需要切换至兼容模式才能打开想要页面的情况。现...

阴历十月初一鬼节鬼门关会开吗(十月初一鬼门关什么时候开)

阴历十月初一鬼节鬼门关会开吗(十月初一鬼门关什么时候开)

十月初一送寒衣是很多北方地区都有的习俗,但由于该节日作为四大鬼节之一,所以很多讲说法都会出现在我们生活中,因此阴历十月初一鬼节鬼门关会开吗成了大家都在问的,下面小编就和大家一起看看。阴历十月初一鬼节鬼门关会开吗就老一辈的 十月初一送寒衣是很多北方地区都有的习俗,但由于该节日作为四大鬼节之一,所以很...

2022年十月初一烧纸要摆供吗(寒衣节烧纸啥时候最好)

2022年十月初一烧纸要摆供吗(寒衣节烧纸啥时候最好)

祭祀祖先是逢年过节大家必做的事情之一,这不眼见着十月初一了,也就是我们常说的寒衣节,所以很多友友都在准备送寒衣的事情,下面小编就和大家一起看看2022年十月初一烧纸要摆供吗。2022年十月初一烧纸要摆供吗看地方的讲究。十 祭祀祖先是逢年过节大家必做的事情之一,这不眼见着十月初一了,也就是我们常说的...

2022年寒露过了就入冬了吗(寒露过了是秋天还是冬天)

2022年寒露过了就入冬了吗(寒露过了是秋天还是冬天)

一年有二十四节气,寒露节气就是其中比较常见的一个节气,也是比较特别的一个节气,一般是在每年十月初,这个时候大多数地区已经进入秋天,气温会有所下降,但是并没有开始入冬,很多地区还是比较舒适的温度,尤其是我国南方地区。202 一年有二十四节气,寒露节气就是其中比较常见的一个节气,也是比较特别的一个节气...

2022冬至烧纸钱可以提前烧吗(冬至烧纸适宜什么时间点烧)

2022冬至烧纸钱可以提前烧吗(冬至烧纸适宜什么时间点烧)

冬至烧纸钱是很多地区都有的习俗之一,但由于这是祭祀祖先,所以烧纸的时辰也成了大家茶余饭后讨论的焦点,下面小编就和大家一起看看2022冬至烧纸钱可以提前烧吗宜什么时间点烧。2022冬至烧纸钱可以提前烧吗看地方的讲究,毕竟十 冬至烧纸钱是很多地区都有的习俗之一,但由于这是祭祀祖先,所以烧纸的时辰也成了...

嘴唇长了疱疹还越来越肿怎么办(嘴唇疱疹嘴唇肿大多久会消肿)

嘴唇长了疱疹还越来越肿怎么办(嘴唇疱疹嘴唇肿大多久会消肿)

嘴唇长了疱疹是需要用药物涂抹治疗的,不管它的话就会好的比较慢,严重点的会引起嘴唇或者牙龈肿大,有的时候半边脸都是疼的。那么,嘴唇疱疹嘴唇肿大多久会消肿?一起来看看久久派带来的详细介绍吧!嘴唇长了疱疹还越来越肿怎么办患者 嘴唇长了疱疹是需要用药物涂抹治疗的,不管它的话就会好的比较慢,严重点的会引起嘴...

iPhone14双十一官网会降价吗(苹果14双11大概会是多少钱)

iPhone14双十一官网会降价吗(苹果14双11大概会是多少钱)

iPhone14双十一官网一般是没有优惠的,但其他电商平台是会有折扣的,每年都是如此,更何况今年的iPhone14销量并不是很好,所以想入手新机的朋友们可以期待双十一的折扣哦!iPhone14双十一官网会降价吗不会,官网 iPhone14双十一官网一般是没有优惠的,但其他电商平台是会有折扣的,每年...

世界十大著名香料植物?(最贵的香料排名)

世界十大著名香料植物?(最贵的香料排名)

最贵的香料排名 对于那些习惯于烹饪和研究欧洲烹饪的人来说,番红花应该熟悉这种顶级香料。除了它是制作西班牙海鲜炖菜的必备材料外,它的高价也足以让人印象深刻。 番红花是世界上最昂贵的香料。如果按重量计算,它的价格有时甚至超过黄金,因此它被称为红金。但是你知道为什么番红花这么贵吗?为什么它能...

奥粒绒穿着起球吗(奥粒绒穿着起球是不是假的)

奥粒绒穿着起球吗(奥粒绒穿着起球是不是假的)

随着天气的变冷,很多友友都开始为自己置办加绒的衣服,而近期一种名为奥粒绒的面料便成了各大直播间的主推,不过因为在外观上看这个外套是毛茸茸的,所以奥粒绒穿着起球吗成了大家好奇的,下面小编就和大家一起看看奥粒绒穿着起球是不是 随着天气的变冷,很多友友都开始为自己置办加绒的衣服,而近期一种名为奥粒绒的面...

拿嫁妆那天男方要送礼吗(嫁妆是必须要有的吗)

拿嫁妆那天男方要送礼吗(嫁妆是必须要有的吗)

结婚是每个人都要经历的,而说到结婚除了婚宴酒席以及日子较为重要外,嫁妆的多少以及什么时候给也是大家关注的焦点。下面小编就和大家一起看看拿嫁妆那天男方要送礼吗。拿嫁妆那天男方要送礼吗拿嫁妆那天男方要送礼。一般来说,在结婚之 结婚是每个人都要经历的,而说到结婚除了婚宴酒席以及日子较为重要外,嫁妆的多少...