首页 > 编程语言 >python - pdf去除水印

python - pdf去除水印

时间:2023-05-06 23:22:46浏览次数:31  
标签:pixmap return python pos 水印 rgb jpg pdf

可以使用微信截图等工具查看需要删除水印的rgb值,

1. pdf转为图片并去除水印

import fitz
from itertools import product
import os
from functools import cmp_to_key
from tqdm import trange

# 打开pdf文件
pdf = fitz.open('./test.pdf')

def check_rgb(rgb):
    # 判断水印蓝色部分
    if rgb[2] >= 230:
        return True
    # 判断水印灰色部分
    elif sum(rgb) >= 560:
        return True
    return False

# 提高清晰度
rotate = int(0)
zoom_x = 2
zoom_y = 2
mat = fitz.Matrix(zoom_x, zoom_y)
# pixmap = pdf[page_num].get_pixmap(matrix=mat, alpha=False)

for page_num in trange(pdf.page_count):
    # 将每一页转换为图片pixmap
    pixmap = pdf[page_num].get_pixmap(matrix=mat, alpha=False)
    for pos in product(range(pixmap.width), range(pixmap.height)):
        # 删除指定高度以上的内容
        if pos[1] <= 75:
            pixmap.set_pixel(pos[0],pos[1],(255,255,255))
            continue
        # 删除指定左下角的内容
        elif pos[0] <= 600 and pos[1] >= 1615:
            pixmap.set_pixel(pos[0],pos[1],(255,255,255))
            continue
        rgb = pixmap.pixel(pos[0],pos[1])
        # 判断该像素点是否置为白色
        if check_rgb(rgb) == True:
            pixmap.set_pixel(pos[0],pos[1],(255,255,255))
    pixmap.pil_save(f'./pic/{page_num}.png')

2. 图片合并并生成pdf

# 过滤掉当前目录除jpg以外的文件
def file_filter(tmp):
    if tmp[-4:] in [".png"]:
        return True
    return False
jpg_names = list(filter(file_filter, os.listdir("./")))

# 按照数字大小排序,避免顺序错误
def cmp(x, y):
    return int(x[0:-4]) - int(y[0:-4])
jpg_names = sorted(jpg_names, key=cmp_to_key(cmp))

# 将jpg转成pdf后合并
pdf = fitz.open()
for i in range(len(jpg_names)):
    pdfbytes = fitz.open(jpg_names[i]).convert_to_pdf()
    imgpdf = fitz.open(f"{jpg_names[i][0:-4]}.pdf", pdfbytes)
    pdf.insert_pdf(imgpdf)
pdf.save("combined.pdf")
pdf.close()

标签:pixmap,return,python,pos,水印,rgb,jpg,pdf
From: https://www.cnblogs.com/wstong2052/p/17378697.html

相关文章

  • python3 xml tree
    Python3XML解析|菜鸟教程(runoob.com)Python标准库之xml.etree-Awakenedy-博客园(cnblogs.com)1、介绍通过python3自带的xml.etree.ElementTree模块可以实现对xml的操作。XML是一种固有的分层数据格式,也是用一棵树来表示它。为此,本模块分为两个类:ElementTree将......
  • Python 发布部署
    原文:https://blog.csdn.net/qq_41466440/article/details/115321381一、本地打包1.生成项目依赖文件在idea中的项目根目录打开Terminal,执行以下命令(前提已经配置好python环境),会在根目录下生成requirements.txt依赖文件pipfreeze>requirements.txt12.打成压缩包二、发布到服......
  • Python将目录添加到环境变量
     importsys,ossys.path.append(os.getcwd())#将当前工作目录加入path#sys.path.append:添加环境变量#os.getcwd:返回当前工作目录(注意是工作目录cwd哦)importsys,ossys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#将当前文件的上级目录......
  • CUDA编程 基础与实践 樊哲勇 电子书 pdf
    作者:樊哲勇出版社:清华大学出版社出版年:2020-10 关注公众号:红宸笑。回复:电子书即可  CUDA是目前较为流行的GPU高性能计算的开发工具之一。本书通过大量实例系统地讲述CUDA编程的重要方面。前12章通过一些简短的例子循序渐进地介绍CUDA编程的基础知识,主要包......
  • python网络通信:IP/端口基础知识
    1.学习网络编程的目的将多个设备通过网络连接在一起,进行数据共享2.IP地址作用:在逻辑上标记一台电脑特点:没有重复的3.通过收发数据理解IP地址的作用destip表示目的ip/srcip表示源ipIP的版本:ipv4:特点:当下通用的地址,但是已经用光了       ipv6:特点:比较新,用的设备......
  • CUDA编程 基础与实践 樊哲勇 电子书 pdf
    作者:樊哲勇出版社:清华大学出版社出版年:2020-10 关注公众号:红宸笑。回复:电子书即可  CUDA是目前较为流行的GPU高性能计算的开发工具之一。本书通过大量实例系统地讲述CUDA编程的重要方面。前12章通过一些简短的例子循序渐进地介绍CUDA编程的基础知识,主要包......
  • python 串口读取IMU
    #coding:UTF-8#Version:V1.0.1importserialACCData=[0.0]*8GYROData=[0.0]*8AngleData=[0.0]*8FrameState=0#WhatisthestateofthejudgmentBytenum=0#ReadthenumberofdigitsinthisparagraphCheckSum=0#Sumcheckbita=[0.0......
  • python - mock 处理
    前言在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况是前端在开发的时候,已经有人写好了接口,直接调用就可以了。但往往是页面写好了,后端接口没有写好,这......
  • python 制作奥运五环 (turtle模块)
     importturtle#第一个圈turtle.width(10)#画笔宽度10turtle.color("black")#画笔的颜色turtle.circle(50)#半径50的圆#第二个圈turtle.penup()#抬笔turtle.goto(110,0)#去到坐标(110,0)turtle.pendown()#放笔turtle.width(10)turt......
  • 使用Python扩展PAM(part 1)
    0、使用Python扩展PAM实现一些额外的功能,比如ssh、vpn等二次验证。1、准备工具实现这个功能需要用到pam_python pam-python 注意!是pam-python不是python_pamPam-python是一个开源的Python模块,用于编写自定义PAM模块。Pam-python使用Python脚本来扩展PAM功能。它使用Cython和Pyt......