V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
hwding
V2EX  ›  分享创造

出于个人需求做了个 PDF 去文字水印的工具,分享一波

  •  
  •   hwding · 2017-08-22 10:04:12 +08:00 · 4674 次点击
    这是一个创建于 2652 天前的主题,其中的信息可能已经有所发展或是发生改变。

    allitebooks下载过很多 PDF 去学校的打印店打印胶装,感觉不比买的书差,而且能看到很多国外新出版的书。 但是这个网站会随机给书中的几页打水印,下载的多了以后去水印是个麻烦事。 所以就做了一个命令行工具,不依赖任何 PDF 编辑器就能快速去文字水印,提供水印的关键字即可,为了防止误伤关键字越具体越好。

    项目地址pdf-unstamper,从昨天下午到夜里一点多才做完,第一版实现了一些基本功能,支持批量处理、文件夹内递归和是否直接读写源文件等选项。

    求支持,由于个人能力有限,希望能够一起改进,核心用了 Apache 的 pdfbox。

    第 1 条附言  ·  2017-08-22 14:08:48 +08:00
    UPDATE: Add supports for PDFs from it**ing.com.cn
    第 2 条附言  ·  2017-08-25 13:35:59 +08:00
    新版本 0.1.0
    - 新算法,支持中文(支持任何语言、任何字体、任何编码的文字水印移除)
    - 移除 -t(--cut-tail) 选项,因此必须提供至少一个关键字
    - 改进错误提示
    23 条回复    2019-01-17 23:45:26 +08:00
    mineqiqi
        1
    mineqiqi  
       2017-08-22 10:54:52 +08:00
    赞,粗略看了下代码,原理是文章重写了一边去实现的吗?
    hwding
        2
    hwding  
    OP
       2017-08-22 11:01:53 +08:00 via iPhone
    @mineqiqi 是遍历每一页中的 Component,相当于检查每一个文本框的内容,发现含有关键字就把它重写为空,因为水印是后打上去的所以一般是一个独立的文本框,去掉的时候不会影响原来的内容。
    natforum
        3
    natforum  
       2017-08-22 11:38:03 +08:00
    图灵社区的图书去不了
    hwding
        4
    hwding  
    OP
       2017-08-22 11:45:56 +08:00
    @natforum 你是说“图灵社区会员 hwding([email protected]) 专享 尊重版权”这个是吗?
    natforum
        5
    natforum  
       2017-08-22 11:54:24 +08:00
    @hwding
    hwding
        6
    hwding  
    OP
       2017-08-22 12:25:24 +08:00
    @natforum 我解决一下,一开始还没发现。
    chinvo
        7
    chinvo  
       2017-08-22 12:27:03 +08:00
    @hwding #4 不建议在这里讨论盗版事宜
    SENSIR
        8
    SENSIR  
       2017-08-22 13:42:58 +08:00 via Android
    楼主有研究过 koreader 吗?这个不只支持 Kindle 的阅读软件在阅读扫描型 pdf 文档时,可以将文字旁灰色的色块去除,增加黑白对比度。
    这个只是单纯根据取色时的灰度,结合预设的阀值来判断的吗?还是会基于全局有一定的“学习”功能?
    hwding
        9
    hwding  
    OP
       2017-08-22 14:04:59 +08:00
    @SENSIR
    很遗憾,由于出发点很简单,单纯去除文字水印 www.allitebooks.com ,所以做的是读取节点元素的文本再将其余参数给的关键字比对来判断是否需要去除。
    你所说的这些功能看起来适用性很强,用起来也很方便,我想用 Apache PDFBox 的话这些功能后期可能会实现。
    @chinvo
    感谢提醒,我会注意,其实我用的那本书就是我在图灵自己买的,并没有拿出来传播。
    @natforum
    我发现这是一个编码问题,试了很多编码没有办法转成中文,后续会跟进这个问题。
    不过刚才看了下 ituring 的 PDF 的特征,新加了-t(--cut-tail)参数,能够成功的去除 ituring 的所有水印。
    ➜ java -jar pdf-unstamper.jar -i Ruby.pdf -d -t
    不过对于其他特征不明显的 PDF 不建议使用这个参数。
    刚发布了一版,也更新了下 README。
    blanu
        10
    blanu  
       2017-08-22 15:06:22 +08:00 via iPhone
    我想写一个能去图片水印的(就是每一页相同位置有一副图片),女票工作上需要。。不过不太会 java,看了下 pdfBox,感觉很强大,请问能很容易实现吗?
    hwding
        11
    hwding  
    OP
       2017-08-22 15:21:58 +08:00 via iPhone
    @blanu PDF box 好像可以操作图片的。
    它的 example 页还没完善好,你看看这个 exemple 的源码:
    https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java?view=markup
    hwding
        12
    hwding  
    OP
       2017-08-22 15:24:05 +08:00 via iPhone
    @blanu 不过你要去图片水印的话命令行的形式可能就不太够用了,得做 UI 了。
    msg7086
        13
    msg7086  
       2017-08-23 03:57:29 +08:00
    让我想起了以前上课的时候老师跟我们说买书太贵了让我们去下 PDF 看的时光。
    hwding
        14
    hwding  
    OP
       2017-08-23 06:56:26 +08:00 via iPhone
    @msg7086 感觉现在书某种程度上依旧有点贵。
    msg7086
        15
    msg7086  
       2017-08-23 07:47:39 +08:00
    @hwding 我觉得只会越来越贵。专业书动不动就 200 刀一本还不含税,学生们就只能 PDF 走起了。
    hwding
        16
    hwding  
    OP
       2017-08-23 12:28:49 +08:00 via iPhone
    @msg7086 等以后工作了就上美亚买正版回报社会😏。
    hwding
        17
    hwding  
    OP
       2017-08-25 13:36:40 +08:00
    @natforum 新版本已发布 支持中文关键字(理论上支持任何语言)
    natforum
        18
    natforum  
       2017-08-25 16:25:34 +08:00
    @hwding 赞一个
    hackpro
        19
    hackpro  
       2017-10-15 16:16:34 +08:00
    非常感谢 V 友,www.it-ebooks.info 测试通过
    有两个问题:
    1. www.it-ebooks.info 会包含在一个文本框中,文字水印去除后,这个文本框还在,有什么办法可以去掉吗?
    2. 可否在脚本 scripts/install 中允许用户定义安装目录 类似 --prefix=...
    hwding
        20
    hwding  
    OP
       2017-10-15 17:15:22 +08:00
    @hackpro 第 2 点我会过几天加在安装脚本里,感谢提议!关于第一点暂时还不考虑,因为可能会引起其他的问题,把这个功能做到 terminal 里就是想让它简单些。
    hackpro
        21
    hackpro  
       2017-10-15 17:20:55 +08:00
    @hwding #20 感谢回复
    hwding
        22
    hwding  
    OP
       2019-01-17 23:40:52 +08:00
    @hackpro 挖坟贴,突然想起来之前更新的版本已经解决了这个框框的问题。
    hackpro
        23
    hackpro  
       2019-01-17 23:45:26 +08:00 via iPad
    @hwding 感谢 有时间试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:57 · PVG 20:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.