精华内容
下载资源
问答
  • 用PyPDF2去除PDF中水印
    千次阅读
    2020-12-06 05:43:24

    This Section imports the necessary classes from the PyPDF2 libraryfrom PyPDF2 import PdfFileReader, PdfFileWriter

    from PyPDF2.pdf import ContentStream

    from PyPDF2.generic import TextStringObject, NameObject

    from PyPDF2.utils import b_

    >The watermark says SAMPLE on it so I've tried different capitalization cases

    wm_text = 'Sample'

    replace_with = ''

    >I'm hoping to just replace the SAMPLE watermark with nothing so a space could suffice

    > Load PDF into pyPDF

    source = PdfFileReader(open('input.pdf', "rb"))

    output = PdfFileWriter()

    > For each page

    for page in range(source.getNumPages()):

    # Get the current page and it's contents

    page = source.getPage(page)

    content_object = page["/Contents"].getObject()

    content = ContentStream(content_object, source)

    > Loop over all pdf elements

    for operands, operator in content.operations:Was told to adapt this part dependent on my PDF file

    ^{pr2}$

    Set the modified content as content object on the pagepage.__setitem__(NameObject('/Contents'), content)Add the page to the outputoutput.addPage(page)

    编写流

    outputStream=打开(“输出.pdf“,”wb“)

    输出.写入(输出流)

    更多相关内容
  • 使用itext开发包对pdf文件进行去水印操作,包括删除图片水印和文字水印。通过遍历pdf的contents对象和xobjects对象,进行对象删除,速度快,效率高
  • 针对的是网上下载的OpenCV 3.x with Python By Example 2nd Edition PDF文件,采用Python和PyPDF2编程,去除PDF上的文字水印去除水印的方法随着采用的加水印的方法不同而不同,所采用的方法对于去除一些指定的...
  • PDF批量去除水印

    2016-10-07 12:22:31
    可以批量去除水印的绿色小工具。
  • Java使用Spire讲网页保存为PDF去除Evaluation Warning水印方案,https://blog.csdn.net/kewen_123/article/details/121025630
  • PDF去水印绿色版

    2018-11-21 13:51:29
    使用SoftOrbits PDF Logo Remover可以轻松简单的去除PDF文件水印。该工具提供一个快速,简单的方式,从PDF文件删除嵌入的图像,而不会影响文件的任何视觉质量。删除烦人的水印,打印多页文件时可节省碳粉或...
  • 大家使用Spire.Pdf.dll到处pdf格式文件时候,如果是使用很多网上dll文件会出现提示语是:Evaluation Warning : The document was created with Spire.PDF for .NET. 该版本经过本人测试,在10页之内是不会存在的了。
  • 批量去除PDF水印(完全免费)

    万次阅读 2020-01-23 17:23:15
    在这里给大家推荐一款好用的软件,帮助去除PDF水印 具体步骤: 1.选择一个PDF,并将想要删除的水印添加到水印去除列表 2.点击下一步,便可生成相应的文件,保存即可 ...

    在这里给大家推荐一款好用的软件,帮助去除PDF的水印

     

    具体步骤:

    1.选择一个PDF,并将想要删除的水印添加到水印待去除列表

    2.点击下一步,便可生成相应的文件,保存即可

    展开全文
  • 最近在下载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语言

    展开全文
  • Spire.Pdf 去除水印版本,.net版本
  • 去除PDF文件水印方法

    2011-11-08 17:30:29
    使用该方法我们就不用再为去不掉pdf上的水印而苦恼了!
  • 使用wps2019去除pdf水印

    千次阅读 2020-04-08 21:38:45
    1、将pdf转换成word文档。 2、编辑word文档,删除谁赢。 3、编辑后保存。

    1、将pdf转换成word文档。

     

    2、编辑word文档,删除谁赢。

    3、编辑后保存。

    展开全文
  • PDF怎么编辑,如何去掉PDF中水印

    千次阅读 2018-12-29 14:33:33
    最近有很多的小伙伴会询问小编,在使用PDF文件的时候,发现文件水印,不知道怎么删除,应大家的需求,小编今天为大家分享的就是,怎么删除PDF文件水印,需要的小伙伴赶紧来看看下面的文章吧,没准就知道了哦...
  • spire.pdf 2.16.27 去水印

    2018-08-05 15:48:20
    spire.pdf 2.16.27 去水印,已测试水印已去可以正常使用
  • 使用aspose-slides15.9.0将ppt转为pdf,实现在线预览,去除水印
  • PDF怎么去水印,去除PDF水印的方法

    千次阅读 2019-04-12 15:57:14
    有些PDF文件会把文件添加上水印,但我们在使用的时候感觉不是那么好,这个时候就需要去除水印了。那么PDF文件去除水印的方法是什么呢?估计有许多的小伙伴还不是懂,今天小编就来跟大家分享一下PDF去除水印的方法...
  • 我们通常会去网上搜索并下载一些资料,但很多时候下载的PDF文档内容都会有一些水印影响使用,要怎样才能删除这些PDF水印呢? 从PDF的两种类型来分别讲讲,第一种就是比较常见的普通PDF文档,一般有Word或Excel等...
  • 4、无损PDF水印去除PDF水印去除器在不影响原始PDF文档质量的情况下工作,提供完全无损的水印去除,原始格式将完全保留。 5、节省油墨和墨粉:深色、忙碌的背景文件不仅难以阅读,并且打印时会消耗额外的墨粉或墨水...
  • PDF格式文件在处理上不像一般格式的文档,打开即可修改,对于PDF文档而言,在使用时,文件总会有水印,不管是文本水印还是图片水印,那么,怎么将文档水印进行删除呢?小编今天将用两种方法告诉大家。 使用...
  • Spire.pdf 破解版 去除水印,附带VS2010 Winform例程,无需安装PDF Reader,开发人员便可以在.NET平台对PDF文档进行处理,并且它与其他.NET应用程序兼容。
  • python-pdf的去水印操作

    2022-03-31 16:29:28
    就是有时候从网上下载的资料pdf水印,看着不舒服。 比如说我从网上下载的试卷,然后去打印店打印,打印之后水印看着很不舒服,而去水印wps要会员,而我是一个程序员,为什么不做一个呢,何乐而不为。 虽然最后...
  • 如何去掉PDF文档水印

    千次阅读 2020-07-31 15:00:11
    1、首先用极速PDF编辑器打开需要去除水印PDF文件后,点击右上角“文档”—“水印”,再选择右侧选项卡的“删除”; 接着页面会弹出删除提示窗口,直接点击确定就可以了。 2、有时有一些水印无法直接使用这种...
  • 用 Python 去除 PDF 水印,你学会吗?

    千次阅读 2021-11-26 13:20:00
    今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 这张图片是前几天整理《数据结构和算法》PDF里的一个截图,带...
  • 水印扫描型PDF文件,其中某页如下图所示,用Python去除其页顶及页底的水印。 处理思路:PDF中的每一页的水印的相对位置基本相同,将PDF每一页输出成图片,然后进行图片编辑,用白色填充方形覆盖水印,最后这些...
  • 在网上下载的Word或pdf模板,有的模板带有水印,这时就需要将水印删除再使用。 首先去除word水印 1、选择“设计”>“水印”。 (在 Word 2010 或 Word 2007 ,选择“页面布局”>“水印”。)选择“删除...
  • 去掉PDF中的“PDFLib” 水印

    热门讨论 2008-03-17 14:57:04
    去掉PDF文件PDFLib库留下的www.PDFLib.com水印. 压缩包有源代码。在RLF/Debug下有可执行文件。 使用时,打开需要去掉水印的PDF文件,即可生成一个新的没有水印的PDF文件。 郑重声明,并非对所有的水印都...
  • 如何去除PDF的水印, 去除PDF水印的方法有哪些?想要去除PDF的水印就需要使用到PDF编辑器来操作,很多人对于PDF编辑怎么去除PDF水印的操作方法也不是很了解,下面小编就为大家分享一下PDF编辑器去除PDF水印的...
  • PDF能编辑吗,怎样去掉PDF上的水印

    千次阅读 2019-01-02 14:57:10
    随着PDF文件使用的越来越多,PDF文件的修改也是大家常常谈论到的话题,在编辑文件的时候需要使用PDF编辑器,那么,文件如果有水印,想要删除水印怎么使用编辑器删除呢,是不是有很多的小伙伴也想知道呢,那就看看...
  • java使用spire.pdf去除水印

    千次阅读 2021-02-13 01:56:41
    最近项目要实现将PDF文件转换成image图片,以便pc端和移动端预览,网上搜索很久后发现spire.pdf很好用。如果PDF文件页数小于10张,可以使用官方提供的免费版,非免费版的在转换... 水印去除方式:public class Spi...
  • PDF去除图片水印

    2021-08-19 09:31:11
    但是偶尔会出现识别问题,最终发现是水印遮挡问题,这边特别记录一下解决方法,网上找了很多去水印的方法但是大多数都是spire.pdf的,确实去水印效果很好但是项目运行会产生无法识别区域设置的问题,然找不到报错...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,016
精华内容 806
关键字:

去除pdf中的水印