├── .github └── ISSUE_TEMPLATE.md ├── README.md ├── logo.icns ├── main.py ├── num.png ├── pdf_none.ui ├── totle.png └── vi.png /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 系统版本:例如 macos Monterey12.13 2 |
3 | Release版本:例如 v1.1.3 4 |
5 | 问题描述:尽量简洁明了 例如 应用闪退 6 |
7 | 步骤复现:如何操作导致的问题出现,第一步xxx,第二步xxx 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #
NO-PDF-WM
2 | 3 |
4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | ## 提示!! 15 | 16 | 目前仅支持MAC OS。 17 | 18 | WIN以及ANDROID正在开发中。喜欢的可以点一个🌟。 19 |

20 | ## 简介 21 | 用途 删除PDF上的水印!!! 22 | 最新版本:V1.1.4 23 | 24 | 目前经过测试的平台为:MAC OS MONTEREY 12.3.1 25 | 26 | python版本为:3.8.5 27 |

28 | ## 使用教程 29 | ### 1.界面总览 30 | ![](/totle.png) 31 | ### 2.水印颜色设置 32 | 输入水印颜色的R、G、B数值的总和。 33 | ![](/num.png) 34 | ### 3.清晰度设置 35 | 越大的清晰度耗时越长,但画质清晰。 36 | 例如选择的值为1,清晰度可能低于原PDF,建议测试合适的值再批量处理。 37 | ![](/vi.png) 38 | 39 | ## 更新记录 40 | Rlease:V1.1.0 BETA🐱 41 | 42 | 增加功能:设置RGB颜色,设置清晰度 43 | 44 | 更新时间:2022.8.23 10:35 BEIJING 45 | 46 | 47 | Rlease:V1.1.3🐱 48 | 49 | 增加功能:应用图标,帮助跳转github🥝 50 | 51 | 更新时间:2022.8.26 20:32 BEIJING 52 | 53 | 54 | Rlease:V1.1.4🐱 55 | 56 | 增加功能:修改应用图标,增加同时修改多种水印 57 | 58 | 更新时间:2022.10.11 21:03 BEIJING 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TAber-W/NO-PDF-WM/6a8cf7d9c155d5cbf2d1021af7bbab30701d6bd1/logo.icns -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | 2 | import sys 3 | import os 4 | from PyQt5.QtCore import QThread,pyqtSignal 5 | from PyQt5 import QtCore,QtGui,QtWidgets,uic,Qt 6 | from PyQt5.QtWidgets import QApplication,QFileDialog,QInputDialog,QDialog,QMessageBox 7 | from PIL import Image 8 | from itertools import product 9 | import webbrowser 10 | import fitz 11 | import os 12 | 13 | 14 | #import py 15 | #from regex import W 16 | 17 | sec=0 18 | page_no = 0 19 | col = 0 20 | val = 0 21 | t = [] 22 | filename = "" 23 | disname = "" 24 | class WorkThread(QThread): 25 | timer = pyqtSignal() 26 | end = pyqtSignal() 27 | def run(self): 28 | #打开源pfd文件 29 | pdf_file = fitz.open(filename[0]) 30 | 31 | 32 | #page_no 设置为0 33 | global page_no 34 | #page在pdf文件中遍历 35 | for page in pdf_file: 36 | #self.sleep(1) 37 | self.timer.emit() 38 | 39 | #print(filename[0]) 40 | trans = fitz.Matrix(int(col),int(col)).prerotate(0) 41 | #获取每一页对应的图片pix (pix对象类似于我们上面看到的img对象,可以读取、修改它的 RGB) 42 | #page.get_pixmap() 这个操作是不可逆的,即能够实现从 PDF 到图片的转换,但修改图片 RGB 后无法应用到 PDF 上,只能输出为图片 43 | pix = page.get_pixmap(matrix=trans, alpha=False) 44 | 45 | #遍历图片中的宽和高,如果像素的rgb值总和大于510,就认为是水印,转换成255,255,255-->即白色 46 | for i in range (len(t)): 47 | 48 | for pos in product(range(pix.width), range(pix.height)): 49 | if sum(pix.pixel(pos[0], pos[1])) >= t[i]: 50 | pix.set_pixel(pos[0], pos[1], (255, 255, 255)) 51 | #保存去掉水印的截图 52 | pix.pil_save( disname+f'/{page_no}.png', dpi=(267, 267)) 53 | #打印结果 54 | #print(f'第 {page_no} 页去除完成') 55 | 56 | page_no += 1 57 | 58 | self.end.emit() 59 | 60 | 61 | 62 | class Stats: 63 | def __init__(self): 64 | self.ui = uic.loadUi("/Users/apple/Desktop/dad/pdf_none.ui") 65 | self.ui.setWindowTitle("PDF 去水印") 66 | self.ui.choosebutton.clicked.connect(self.xfile) 67 | self.ui.valuebutton.clicked.connect(self.xvalue) 68 | self.ui.colorbutton.clicked.connect(self.xcolor) 69 | self.ui.savebutton.clicked.connect(self.xsave) 70 | 71 | 72 | 73 | self.ui.workThread = WorkThread() 74 | 75 | self.ui.actionbangzhu.triggered.connect(self.go_github) 76 | 77 | 78 | self.ui.workThread.end.connect(self.end) 79 | self.ui.workThread.timer.connect(self.timer) 80 | self.ui.donebutton.clicked.connect(self.xwork) 81 | #self.ui.stopbutton.clicked.connect(self.xstop) 82 | 83 | def timer(self): 84 | self.ui.textEdit.append(f'第 {page_no} 页去除完成') 85 | 86 | def end(self): 87 | self.ui.textEdit.append(f'去除完成!!') 88 | 89 | def stop(self): 90 | self.ui.workThread.stop() 91 | 92 | 93 | def xwork(self): 94 | if(filename=="") : 95 | self.ui.textEdit.append('请选择文件!') 96 | elif int(col)==0: 97 | self.ui.textEdit.append('请选择清晰度!') 98 | elif disname == "": 99 | self.ui.textEdit.append('请选择保存位置!') 100 | else: 101 | self.ui.workThread.start() 102 | 103 | def xsave(self): 104 | global disname 105 | disname=QFileDialog.getExistingDirectory(self.ui,"xuanze","/") 106 | self.ui.saveline.setText(disname) 107 | 108 | def xvalue(self): 109 | global val,t 110 | val,ok = QInputDialog.getText(self.ui,"水印数值","请输入水印RGB总和",text="多个水印用;分割") 111 | t = val.split(";") 112 | t=list(map(int,t)) 113 | 114 | 115 | def xfile(self): 116 | global filename 117 | filename= QFileDialog.getOpenFileName(self.ui,'dd',os.getcwd(),"All Files(*);Pdf Files(*.pdf)") 118 | self.ui.lineEdit.setText(filename[0]) 119 | 120 | print(filename[0]) 121 | 122 | def xcolor(self): 123 | items = ["1","2","5"] 124 | global col 125 | col,ok = QInputDialog.getItem(self.ui,"清晰度:会影响速度","请选择清晰度",items,0,True) 126 | if col != "1": 127 | self.ui.textEdit.append('清晰度较大,速度较慢,耐心等待') 128 | 129 | def go_github(self): 130 | 131 | url='https://github.com/TAber-W/NO-PDF-WM' 132 | webbrowser.open(url) 133 | 134 | 135 | 136 | 137 | 138 | if __name__ == "__main__": 139 | App = QApplication(sys.argv) 140 | 141 | stats = Stats() 142 | stats.ui.setWindowIcon(QtGui.QIcon("/Users/apple/Desktop/dad/1.ico")) 143 | stats.ui.show() 144 | sys.exit(App.exec_()) -------------------------------------------------------------------------------- /num.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TAber-W/NO-PDF-WM/6a8cf7d9c155d5cbf2d1021af7bbab30701d6bd1/num.png -------------------------------------------------------------------------------- /pdf_none.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 451 10 | 365 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 选择文件 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 水印颜色 40 | 41 | 42 | 43 | 44 | 45 | 46 | 清晰度 47 | 48 | 49 | 50 | 51 | 52 | 53 | 保存目录 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 开始处理 64 | 65 | 66 | 67 | 68 | 69 | 70 | 停止处理 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 0 91 | 0 92 | 451 93 | 24 94 | 95 | 96 | 97 | 98 | 关于 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 帮助 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /totle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TAber-W/NO-PDF-WM/6a8cf7d9c155d5cbf2d1021af7bbab30701d6bd1/totle.png -------------------------------------------------------------------------------- /vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TAber-W/NO-PDF-WM/6a8cf7d9c155d5cbf2d1021af7bbab30701d6bd1/vi.png --------------------------------------------------------------------------------