如何批量删除PDF文档中的”www.it-ebooks.info“

      经常在http://www.it-ebooks.info/下载电子教程,但是下载的教程每页都会打上www.it-ebooks.info的标签。之前也没太注意,最近每次看到这些标签都有点小烦躁,想着是不是可以批量去除,首先考虑是在Adobe Acrobat XI Pro下去除水印,但是很遗憾参考很多网上的教程都没有处理掉。萌生了写个脚本批量处理的想法,在谷歌搜到一个外国人写的相关分析和教程,我觉得挺好的,也就依葫芦画瓢演示一遍,算是留个笔记吧。

      大致思路是,用hex编辑器打开PDF文件,找到带有www.it-ebooks.info的文本,然后全部替换成为空即可。

      因为我的ubuntu14.04虚拟机不带Bless Hex编辑器,首先需要安装。命令如下:

apt-get install bless

       在ubuntu14.04中使用bless打开需要处理的PDF文档,如下图所示:

 
      接下来,我们来找这里面的www.it-ebooks.com字符串。在两个地方存在www.it-ebooks.com字符串,一个是在link中,一个是在text中。我们来看link中的www.it-ebooks.com。如下图所示:
 
      图中选中的部分即是link中的www.it-ebooks.com。link中的结构如下:
<<
/Type /Annot
/Subtype /Link
/Rect [ 210 18.5 294 6.5 ]
/Border [ 0 0 0 ]
/A <<
/Type /Action
/S /URI
/URI (http://www.it-ebooks.info/)
>>
>>
      查看了一下《Developing with PDF》这本书,一对双角括号代表一个Dictionary对象,其中包含属性和对象的值。上面得到的就是link中的www.it-ebooks.com。接下来,我们来找text中的www.it-ebooks.com部分。如下图所示:
 
      text中的结构如下:
BT
1 0 0 1 0 0 Tm
(www.it-ebooks.info)Tj
ET
      我们只要把以上两部分的内容替换为空字符就可以删除整个PDF文档中的www.it-ebooks.com水印了。
      接下来,我们编写一个python脚本来自动化进行这个过程:源码如下:
#!/usr/bin env python
# __author__ = ‘hiccup‘
import os
import sys
import binascii
import optparse

hex_link_pat = "".join("0A 3C 3C 0A 2F 54 79 70 65 20 2F 41 6E 6E 6F 74 0A 2F 53 75 "
                       "62 74 79 70 65 20 2F 4C 69 6E 6B 0A 2F 52 65 63 74 20 5B 20 "
                       "32 31 30 20 31 38 2E 35 20 32 39 34 20 36 2E 35 20 5D 0A 2F "
                       "42 6F 72 64 65 72 20 5B 20 30 20 30 20 30 20 5D 0A 2F 41 20 "
                       "3C 3C 0A 2F 54 79 70 65 20 2F 41 63 74 69 6F 6E 0A 2F 53 20 "
                       "2F 55 52 49 0A 2F 55 52 49 20 28 68 74 74 70 3A 2F 2F 77 77 "
                       "77 2E 69 74 2D 65 62 6F 6F 6B 73 2E 69 6E 66 6F 2F 29 0A 3E "
                       "3E 0A 3E 3E".split())

hex_text_pat = "".join("0A 42 54 0A 31 20 30 20 30 20 31 20 30 20 30 20 54 6D 0A 28 "
                       "77 77 77 2E 69 74 2D 65 62 6F 6F 6B 73 2E 69 6E 66 6F 29 54 "
                       "6A 0A 45 54".split())

def remove_watermark(path):
    pdf_bin_data=""
    if os.path.exists(path) and path.endswith(".pdf"):
        try:
            with open(path,"rb") as f:
                pdf_bin_data = f.read()
                pdf_bin_data = pdf_bin_data.replace(binascii.unhexlify(hex_link_pat),"")
                pdf_bin_data = pdf_bin_data.replace(binascii.unhexlify(hex_text_pat),"")
        except IOError:
            sys.stderr.write("Error in opening file")
    else:
        raise ValueError("Path invalid or file is not in PDF format")
    return pdf_bin_data

if __name__ == "__main__":
    parser = optparse.OptionParser("usage: %prog "+‘-F <filepath>‘)
    parser.add_option(‘-F‘,dest=‘filepath‘,type=‘string‘,help=‘specify absolute path of pdf file‘)
    (options, args) = parser.parse_args()
    filepath = options.filepath
    if filepath == None:
        print parser.usage
        exit(0)
    newfile= ‘new_‘+os.path.split(filepath)[1]
    try:
        with open(newfile,‘wb‘) as f:
            f.write(remove_watermark(filepath))
            f.close()
            print ‘remove watermark done!‘
    except IOError:
        sys.stderr.write("Problem in writing file.")
       参考文献:http://www.rawcoders.com/Thread-How-To-Remove-it-ebooks-info-watermark-from-pdfs
时间: 2024-12-19 21:15:37

如何批量删除PDF文档中的”www.it-ebooks.info“的相关文章

如何删除PDF文档中指定的一页文件?

又是在在查看PDF格式文件的时候会发现文件中有一页文件不符合要求,这个时候我们正常的决定是把该页面进行删除,但是因为PDF文件比较特殊,那么如何才能删除PDF文件中指定的文件页面呢? 1.将捷速PDF编辑器下载到电脑上后,我们运行这款软件,然后点击软件界面里的"打开"选项,将需要编辑的PDF文件打开. 2.打开PDF文件之后,我们需要点击界面里的"文档"按钮,然后点击里面的"删除页面"功能,进行指定页面删除操作. 3.打开删除页面界面后,点击里面

PDF文件怎么编辑攻略:删除PDF文档水印或添加水印

PDF 文档不像Word文档,它具有不易编辑的特点,因此编辑PDF文档是需要专门的软件的.迅捷PDF编辑器就是一款专门编辑PDF文档的办公软件,操作十分简单,功能却很全面. 一.删除水印 1.运行迅捷PDF编辑器,然后用鼠标左键选中需要删除水印的PDF文档,然后拖拽到软件的界面中,就可以在软件中打开文件了. 2.然后按照"文档--水印--管理"的步骤进行操作,进入管理水印的界面. 3.在管理水印的界面中,你可以选中你想要删除的水印,然后单击"移除"即可删除水印. 4

利用iStylePDF的API实现在PDF文档中动态插入一幅图片

PDF的交互特性里面有一种叫Annotation的注释和标记对象,我们可以在一个注释对象中放入自己想要的数据.在这篇文章中所讲到的插入一幅图片,是我们在PDF应用中经常需要这样做的,比如个人签名的图片等. 首先我们来认识下PDF里面中的Annotations是何东东.一个annotation关联了一些注释.声音.电影等对象,PDF标准中预定义了一些常用的注释类型.在我们的帮助文档中有详细的说明,等下也会用到的,我列举出来了,如下所示 名称 数值 描述 spAnnotText 0 文本 spAnn

批量删除wps文档里的回车符的方法!WPS使用技巧分享!

有时候整理文档的时候,如果是从网上复制的文字,可能会因为复制而产生很多的回车符.怎样能批量去掉这些个回车符呢,下面马上告诉你批量删除wps文档里的回车符的方法!WPS使用技巧分享! 想要批量删除批量删除wps文档里的回车符,我们首先要了解回车符的种类!WPS文字或者Word中的回车符分为两种:一种为自带的回车符,一种为网络文件产生的回车符,称之为换行符. 1.批量删除wps文档里的回车符方法如下: 编辑--> 替换--> 替换-->高级-->特殊字符-->选择段落标记--&g

Java 在PDF文档中绘制图形

本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等. 使用工具:Free Spire.PDF for Java(免费版) Jar文件导入: 步骤1:将安装包中lib文件夹下的两个文件复制到程序中新建的文件夹中(这里在程序中可新建一个文件夹并命名为Lib) 步骤2:复制文件后,将两个添加引用到程序:选中这两个jar文件,点击鼠标右键,选择"Build

[PDF文件怎么编辑]如何在PDF文档中插入图片

收到一份PDF格式文档需要进行编辑,文件中只有文本内容,需要在页面中为对应的配图,也就是在PDF中添加图片,作为一个只懂得用阅读器来查看文档人来说,编辑PDF文件可谓是一件难事,这种格式的文件是如何编辑的呢? 首先对PDF文档内容的修改需要用到对应的PDF编辑器,所以先进行下载安装. 打开PDF编辑器,选择"文件-打开"命令,打开需要编辑的PDF文档. 文档打开后切换到需要添加图片的页面,选择"文档-添加图像"命令,会弹出打开文件对话框. 在对话框中选择需要添加的图

怎样操作可以删掉pdf文档中不需要的文字

PDF格式文件虽然很好用,但是却不易处理,如果我们需要修改编辑这种文件该怎么做呢?其实方法非常多,使用PDF编辑器就能轻松完成,但是有很多朋友并不知道PDF编辑器怎么编辑PDF文件,接下来就由小编向大家介绍如何使用PDF编辑器删除PDF文件中的文字内容,一起来学习一下吧! 迅捷PDF编辑器,这款软件它的亮点在于全面优化编辑功能,大幅节省工作的时间.更是可以快速的修改PDF文件里的任意内容,同时还可以修改文字的大小等数据,完全可以帮助大家编辑PDF文件中的文字和图片. 这款软件可以提供完整的PDF

.net环境下从PDF文档中抽取Text文本的一些方法汇总

1.PDFBox的IKVM版本:据我所知,目前只有PDFBox的IKVM版本能比较好地从PDF中提取文本,PDFBOX更多信息请访问http://www.pdbox.org,关于其应用实例,可以参考CodeProject上的:http://www.codeproject.com/csharp/pdf2text.asp;2.使用Acrobat的SDK(这个价格可不便宜):3.XPDF:如果条件允许可以考虑使用XPDF的PDFToText,XPDF是用C语言编写的PDF解析库,并提供多个工具,开放源

删除word文档中表格后的空行

处理办法为: 方法1:使上.下页边距数值缩小,从而使页面扩大能容纳下这一段落行. 方法2:光标处于最后段落行符号前,右键→段落→缩进和间距→间距→行距→固定值→设置值→1磅→确定.