-
更多相关内容
-
使用迅捷PDF编辑器免费去除pdf水印
2020-09-22 13:03:29免费去除pdf文件的水印 2,工具 我这里用的是迅捷PDF编辑器 3,操作 1,打开pdf文档 2,去除水印 3,保存 当你看到这个弹框的时候,先不要急着骂娘,我们都是文明人,接着往下看 4,右击缩略图,选中提取页面 5,选中页面范围...1,需求
免费去除pdf文件的水印
2,工具
我这里用的是迅捷PDF编辑器
3,操作
1,打开pdf文档
2,去除水印
3,保存
当你看到这个弹框的时候,先不要急着骂娘,我们都是文明人,接着往下看
4,右击缩略图,选中提取页面
5,选中页面范围,文件名称,目标文件夹,确定
这时候你就会发现,无水印的文件已经保存了,是不是很爽,当然啦,你可以选择Adobe自己的PDF编辑软件,这里只是为大家多提供一种思路.
-
去除pdf的图片水印和文字水印
2020-08-12 14:03:32使用itext开发包对pdf文件进行去水印操作,包括删除图片水印和文字水印。通过遍历pdf的contents对象和xobjects对象,进行对象删除,速度快,效率高 -
批量去除PDF的水印(完全免费)
2020-01-23 17:23:15在这里给大家推荐一款好用的软件,帮助去除PDF的水印 具体步骤: 1.选择一个PDF,并将想要删除的水印添加到水印待去除列表 2.点击下一步,便可生成相应的文件,保存即可 ...在这里给大家推荐一款好用的软件,帮助去除PDF的水印
具体步骤:
1.选择一个PDF,并将想要删除的水印添加到水印待去除列表
2.点击下一步,便可生成相应的文件,保存即可
-
去除PDF文件上的文字水印简单特例
2019-07-02 11:12:02针对的是网上下载的OpenCV 3.x with Python By Example 2nd Edition PDF文件,采用Python和PyPDF2编程,去除该PDF上的文字水印。去除水印的方法随着采用的加水印的方法不同而不同,所采用的方法对于去除一些指定的... -
PDF批量去除水印
2016-10-07 12:22:31可以批量去除水印的绿色小工具。 -
PDF去水印绿色版
2018-11-21 13:51:29软件大小:5.62M 软件语言:多国语言(含简中) ... 爱分享从官网了解到SoftOrbits PDF Logo Remover的优点在于:改善阅读体验、节省墨水和碳粉、批量去除水印、无损去除PDF格式水印、嵌入自己的水印。 -
用Python去除PDF水印尝试
2022-03-13 12:57:10最近在下载PDF书籍的时候,发现有些PDF有水印,于是就寻思着能不能用Python去除这些讨厌的水印 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1....
前言
最近在下载PDF书籍的时候,发现有些PDF有水印,于是就寻思着能不能用Python去除这些讨厌的水印
一、PDF文件
关于PDF文件,想必大家都很熟悉了,这里就不过多的介绍了。PDF主要有两种类型,一种是文字版,另外一种就是扫描版(图片)。这个去除水印主要就是针对扫描版的PDF
代码路径
二、思路整理
在开始写代码之前,先捋一下实现的思路
1、分割图片
对于一个PDF文件,我们只需要图片信息就可以了,所以首先需要先提取里边的图片,再把图片存在一个目录下。这里需要用到fitz模块,直接安装即可,如下:
pip install PyMuPDF
模块安装完之后,代码就很简单了,只需要注意一下图片按顺序命名即可,如下:
def split_pdf(file_path, out_path): """ 切割pdf为图片 :param file_path: pdf路径 :param out_path: 输出图片路径 :return: 输出路径 """ pdf = fitz.open(file_path) count = 0 print("##### 开始保存切割图片 #####") for page in pdf: image_list = page.get_images() for img_info in image_list: pix = fitz.Pixmap(pdf, img_info[0]) pix.save(os.path.join(out_path, '%d.jpg' % count)) count += 1 print("##### 保存切割图片完毕 #####") print("##### {0} 包含 {1} 张图片 #####".format(file_path, count)) return out_path
2、去除水印
分割完图片后,接下来的问题也随之而来了,要如何区分水印和正常图片? 要替换成什么? 先来看第一个问题,如何区分水印
- 按水印位置
这个问题,最直观的想法就是根据水印的位置以及水印的大小,进行替换就可以。但是这样存在问题,首先就是不通用(PDF水印的位置可能不一样),再者就是水印和字混在一起就不好弄了
像这种水印,坐标和大小是可以去除的
像这种字和水印混在一起就难办了
- 按颜色
我们在观察下水印,发现水印的颜色一般偏亮一点,而字都是偏暗色的(黑色、灰色)。我们可以根据颜色将亮一点的颜色都替换掉。但这种方式也有问题,如果是彩色的,就够呛了
对于第二个问题:要替换成什么? 如果只有简单的颜色(黑白灰等),我们直接把水印替换成白色即可
接下来来看下代码吧,这里需要用到PIL模块,直接安装就行了,如下:
pip install pillow
思路有了,代码就简单了,如下:
def get_image_arr(img): """ 获取图片三色数组 :param img:图片 :return: 图片编码、三色数组 """ img_arr = np.asarray(img, dtype=np.double) # 分离通道 r_img = img_arr[:, :, 0].copy() g_img = img_arr[:, :, 1].copy() b_img = img_arr[:, :, 2].copy() img = r_img * 256 * 256 + g_img * 256 + b_img return img, r_img, g_img, b_img def replace_clr_color(img, src_clr, dst_clr): """ 通过矩阵操作颜色替换程序 @param img: 图像矩阵 @param src_clr: 需要替换的颜色(r,g,b) @param dst_clr: 目标颜色 (r,g,b) @return 替换后的图像矩阵 """ img, r_img, g_img, b_img = get_image_arr(img) src_color = src_clr[0] * 256 * 256 + src_clr[1] * 256 + src_clr[2] # 索引并替换颜色 r_img[img == src_color] = dst_clr[0] g_img[img == src_color] = dst_clr[1] b_img[img == src_color] = dst_clr[2] return compound_img(r_img, g_img, b_img) def compound_img(r_img, g_img, b_img): """ 合并图片 :param r_img: 红色 :param g_img: 绿色 :param b_img: 蓝色 :return: 图片 """ # 合并通道 dst_img = np.array([r_img, g_img, b_img], dtype=np.uint8) # 将数据转换为图像数据(h,w,c) dst_img = dst_img.transpose(1, 2, 0) return dst_img def replace_pure_color(img, src_color, dst_color): """ 通过矩阵操作颜色替换程序(纯色) :param img: 图像矩阵 :param src_color: 需要替换的颜色 :param dst_color: 目标颜色 :return: 图片 """ img, r_img, g_img, b_img = get_image_arr(img) src_color = src_color * 256 * 256 + src_color * 256 + src_color # 索引并替换颜色 r_img[img >= src_color] = dst_color g_img[img >= src_color] = dst_color b_img[img >= src_color] = dst_color return compound_img(r_img, g_img, b_img) def wipe_watermark(img_file, start_color): """ 去除图片水印 :param start_color: 颜色起始替换位置 :param img_file: 图片文件 :return: """ img = replace_pure_color(Image.open(img_file).convert('RGB'), start_color, 255) res_img = Image.fromarray(img) res_img.save(img_file)
3、替换图片
保存完去除水印后的图片,接下来只要把他一个个替换进去就行了
由于原始PDF文件可以有其他东西(书签等),所以我们先把原始文件读取进去,在进行替换,代码如下:
def save_pdf(src_pdf, dest_pdf, file_list): """ 生成最终pdf文件 :param src_pdf: 源文件 :param dest_pdf: 目标文件 :param file_list: 图片列表 :return: """ pdf = fitz.open(src_pdf) index = 0 try: for page in pdf: # 去除超链接 for link in page.get_links(): page.delete_link(link) # 替换图片 for img in page.get_images(): page._insert_image(filename=file_list[index], _imgname=img[7]) index = index + 1 pdf.save(dest_pdf) finally: pdf.close()
三、实现效果
lu完代码,再来看一下效果怎么样,这边用了两个PDF做实验,第一个PDF效果如下:
去除水印前:
去除水印后:
第二个PDF效果如下:
去除水印前:
去除水印后:
感觉效果还阔以,哈哈。不过这里有个问题,对于文字logo,查了PyMuPDF文档没找到罒ω罒,像这种
四、代码实现
全部代码如下:
import os import fitz import numpy as np from PIL import Image def split_pdf(file_path, out_path): """ 切割pdf为图片 :param file_path: pdf路径 :param out_path: 输出图片路径 :return: 输出路径 """ pdf = fitz.open(file_path) count = 0 print("##### 开始保存切割图片 #####") for page in pdf: image_list = page.get_images() for img_info in image_list: pix = fitz.Pixmap(pdf, img_info[0]) pix.save(os.path.join(out_path, '%d.jpg' % count)) count += 1 print("##### 保存切割图片完毕 #####") print("##### {0} 包含 {1} 张图片 #####".format(file_path, count)) return out_path def get_image_arr(img): """ 获取图片三色数组 :param img:图片 :return: 图片编码、三色数组 """ img_arr = np.asarray(img, dtype=np.double) # 分离通道 r_img = img_arr[:, :, 0].copy() g_img = img_arr[:, :, 1].copy() b_img = img_arr[:, :, 2].copy() img = r_img * 256 * 256 + g_img * 256 + b_img return img, r_img, g_img, b_img def replace_clr_color(img, src_clr, dst_clr): """ 通过矩阵操作颜色替换程序 @param img: 图像矩阵 @param src_clr: 需要替换的颜色(r,g,b) @param dst_clr: 目标颜色 (r,g,b) @return 替换后的图像矩阵 """ img, r_img, g_img, b_img = get_image_arr(img) src_color = src_clr[0] * 256 * 256 + src_clr[1] * 256 + src_clr[2] # 索引并替换颜色 r_img[img == src_color] = dst_clr[0] g_img[img == src_color] = dst_clr[1] b_img[img == src_color] = dst_clr[2] return compound_img(r_img, g_img, b_img) def compound_img(r_img, g_img, b_img): """ 合并图片 :param r_img: 红色 :param g_img: 绿色 :param b_img: 蓝色 :return: 图片 """ # 合并通道 dst_img = np.array([r_img, g_img, b_img], dtype=np.uint8) # 将数据转换为图像数据(h,w,c) dst_img = dst_img.transpose(1, 2, 0) return dst_img def replace_pure_color(img, src_color, dst_color): """ 通过矩阵操作颜色替换程序(纯色) :param img: 图像矩阵 :param src_color: 需要替换的颜色 :param dst_color: 目标颜色 :return: 图片 """ img, r_img, g_img, b_img = get_image_arr(img) src_color = src_color * 256 * 256 + src_color * 256 + src_color # 索引并替换颜色 r_img[img >= src_color] = dst_color g_img[img >= src_color] = dst_color b_img[img >= src_color] = dst_color return compound_img(r_img, g_img, b_img) def list_file(path, suffix=None): """ 获取指定目录下指定后缀文件 :param path: 路径 :param suffix: 后缀名 :return: 文件集合 """ file_names = os.listdir(path); # 获取文件名 if suffix is not None: file_names = [file_name for file_name in file_names if file_name.endswith(suffix)] file_names.sort(key=lambda x: int(x[:(-len(suffix))])) # 文件名拼接路径 return [os.path.join(path, file) for file in file_names] def wipe_watermark(img_file, start_color): """ 去除图片水印 :param start_color: 颜色起始替换位置 :param img_file: 图片文件 :return: """ img = replace_pure_color(Image.open(img_file).convert('RGB'), start_color, 255) res_img = Image.fromarray(img) res_img.save(img_file) def save_pdf(src_pdf, dest_pdf, file_list): """ 生成最终pdf文件 :param src_pdf: 源文件 :param dest_pdf: 目标文件 :param file_list: 图片列表 :return: """ pdf = fitz.open(src_pdf) index = 0 try: for page in pdf: # 去除超链接 for link in page.get_links(): page.delete_link(link) # 替换图片 for img in page.get_images(): page._insert_image(filename=file_list[index], _imgname=img[7]) index = index + 1 pdf.save(dest_pdf) finally: pdf.close() def start(file_path, dest_path, start_color, out_path=r'out'): if os.path.exists(out_path): # shutil.rmtree(out_path) raise FileExistsError('文件夹:{0} 已存在'.format(out_path)) os.mkdir(out_path) print("####### 开始切割pdf:{0} #######".format(file_path)) split_pdf(file_path, out_path) print("####### 切割pdf完毕:{0} #######".format(file_path)) # 获取文件名 file_list = list_file(out_path, ".jpg") print("####### 开始去除水印 #######") for img_file in file_list: wipe_watermark(img_file, start_color) print("####### 去除水印结束 #######") # 生成pdf print("####### 生成pdf文件:{0} #######".format(dest_path)) save_pdf(src_pdf=file_path, dest_pdf=dest_path, file_list=file_list) print("####### 生成pdf文件:{0} 完成 #######".format(dest_path)) # make_pdf(dest_path, file_list) if __name__ == '__main__': # replace_pdf(src_pdf="深入剖析TOMCAT.pdf", dest_pdf='a.pdf', file_list=list_file('out', ".jpg")) # www.TopSage.com start(file_path="重构-改善既有代码的设计.pdf", dest_path="b.pdf", start_color=175)
总结
这里实现相对比较简单,只能去除一些纯色图片的PDF,这里没能去除文字logo(懂得大佬麻烦告知一下(〃‘▽’〃))。这里就作为个简单的demo吧。主要是用Python做点骚操作,用来熟悉一下Python语言
- 按水印位置
-
用 Python 去除 PDF 水印,你学会吗?
2021-11-26 13:20:00今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 这张图片是前几天整理《数据结构和算法》PDF里的一个截图,带... -
Java使用Spire讲网页保存为PDF并去除Evaluation Warning水印方案
2021-10-28 23:32:10Java使用Spire讲网页保存为PDF并去除Evaluation Warning水印方案,https://blog.csdn.net/kewen_123/article/details/121025630 -
PDF怎么去水印,去除PDF水印的方法
2019-04-12 15:57:14有些PDF文件会把文件中添加上水印,但我们在使用的时候感觉不是那么好,这个时候就需要去除水印了。那么PDF文件去除水印的方法是什么呢?估计有许多的小伙伴还不是懂,今天小编就来跟大家分享一下PDF去除水印的方法... -
aspose-slides15.9.0去除水印,将ppt转为pdf
2021-10-13 10:36:06使用aspose-slides15.9.0将ppt转为pdf,实现在线预览,去除水印。 -
去除PDF文件水印方法
2011-11-08 17:30:29使用该方法我们就不用再为去不掉pdf上的水印而苦恼了! -
去除word PDF水印 去除pdf限制
2019-09-27 16:00:32在网上下载的Word或pdf模板,有的模板中带有水印,这时就需要将水印删除再使用。 首先去除word水印 1、选择“设计”>“水印”。 (在 Word 2010 或 Word 2007 中,选择“页面布局”>“水印”。)选择“删除... -
Spire.Pdf 去除水印版本:5.12.15.2040.zip
2021-10-15 11:07:14Spire.Pdf 去除水印版本,.net版本 -
Spire.pdf 破解版 去除水印,附带VS2010 Winform例程。
2019-04-25 14:38:18Spire.pdf 破解版 去除水印,附带VS2010 Winform例程,无需安装PDF Reader,开发人员便可以在.NET平台对PDF文档进行处理,并且它与其他.NET应用程序兼容。 -
如何去除pdf中的烦人水印(打开方式为wps)
2019-07-09 15:19:44我们从网站下载好论文后,常常会发现文章中带有水印,那么如何去除呢?今天偶然亲身实践了一种方法: 1、右击选中水印区域,选择“编辑图片” 这时我们会发现目标区域变成了图片可拖拽编辑类型,左键选中,Delate... -
Ubuntu使用自带的Liboffice Draw去除PDF水印
2021-03-10 12:57:50身边没有扫描仪,大家一般会使用一些APP扫描软件,通过拍照,将文件转换为PDF扫描件,但是一般会被APP加上水印logo,在某些情况下出现这些水印是十分不合适的,如果为了去除一张扫描件的水印,开个会员不是很值,这... -
PDF去水印工具PDF去水印工具
2021-04-10 10:29:294、无损PDF水印去除:PDF水印去除器在不影响原始PDF文档质量的情况下工作,提供完全无损的水印去除,原始格式将完全保留。 5、节省油墨和墨粉:深色、忙碌的背景文件不仅难以阅读,并且打印时会消耗额外的墨粉或墨水... -
用PyPDF2去除PDF中的水印
2020-12-06 05:43:24This Section imports the necessary classes from the PyPDF2 libraryfrom PyPDF2 import PdfFileReader, PdfFileWriterfrom PyPDF2.pdf import ContentStreamfrom PyPDF2.generic import TextStringObject, NameOb... -
利用 Python 去除 PDF 水印(和图片水印原理一样)
2021-11-26 15:37:55今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 原理 这张图片是前几天整理《数据结构和算法》PDF里的一个... -
如何给PDF去除水印,PDF去水印的方法
2019-06-10 16:47:32我们在使用的PDF文件也会有一部分水印,想要直接在PDF文件中去除这些水印还是比较难的,去除PDF文件中的水印需要使用专业的PDF编辑器来进行操作,接下面为大家揭晓一下如何给PDF文件去除水印。操作方法如下:一:... -
PDF去除图片水印
2021-08-19 09:31:11事情起因是这样的因工作需要需要识别pdf文件内容,但是偶尔会出现识别问题,最终发现是水印遮挡问题,这边特别记录一下解决方法,网上找了很多去水印的方法但是大多数都是spire.pdf的,确实去水印效果很好但是项目... -
最新自用pdf免费在线去水印全套方案
2021-09-27 15:11:38结合自己搜索的网上资源,整合了以下免费在线去水印的全套方案,建议收藏: 1.解密PDF: https://www.ilovepdf.com/zh-cn/unlock_pdf 如果pdf被加密的话进行此步操作,无加密直接去水印即可 2.PDF去水印:... -
干货福利分享:pdf怎么去水印 如何在线去除PDF水印
2018-01-12 13:44:09对于PDF文件来最大的麻烦就是PDF文件的打开以及编辑...小编今天就和你们讲解一下如何利用迅捷PDF在线编辑器去给PDF文件进行在线PDF水印删除 1.首先我们打开百度浏览器进行搜索“迅捷PDF在线编辑器”然后点击进 -
使用wps2019去除pdf的水印
2020-04-08 21:38:451、将pdf转换成word文档。 2、编辑word文档,删除谁赢。 3、编辑后保存。 -
Spire.Pdf去除水印的.NETdll资源库
2018-04-26 14:34:19大家使用Spire.Pdf.dll到处pdf格式文件时候,如果是使用很多网上dll文件会出现提示语是:Evaluation Warning : The document was created with Spire.PDF for .NET. 该版本经过本人测试,在10页之内是不会存在的了。 -
spire.pdf 2.16.27 去水印
2018-08-05 15:48:20spire.pdf 2.16.27 去水印,已测试水印已去可以正常使用 -
PDF水印工具for Mac-PDF水印工具Mac版下载 V1.7-PC6苹果网
2020-12-22 22:54:31PDF水印工具Mac版是Mac平台上的一款专门为PDF文件批量添加水印的工具。PDF水印工具Mac版使得在PDF文档中添加水印变得更加轻松。软件特色利用PDF水印工具Mac版,您可以将水印设计成文件名、公司Logo、个人签名、产品... -
批量去除pdf水印
2020-02-26 17:51:07本文解决问题:PDF文件水印怎么去除?如何去掉PDF的水印?有多少种方法?最简单的方法? PDF文件如果有水印,不少还很醒目,影响浏览,有的带有连接,一不小心就打开了浏览器,相信大家都有感触.现介绍下面的方法,...