人人都见过PDF文档页面中的水印,就像下面这样:
我们有很多工具可以去掉那些影响阅读的水印,最优秀的工具是Enfocus PitStop Pro,一个又大又昂贵的插件 ---- 但是它确实好使。
问题是:所有的商业软件在处理水印的时候,都会重新格式化文档内容流(由类似PostScript语言的操作符构成)和文档结构数据,这就不可避免地改变了原始文档。有些时候,这种改变会影响文档的二次处理。
那么,我们为什么不能从另一个角度思考水印的处理方式呢?
需要给普通人解释一下,PDF格式是一个渲染文档格式,它不像Word那样保证储存的是明文文本。实际上,许多PDF文档是采用绘图的方式或者内部编码的方式来显示文本和图片的。因此,你不能简单地删除水印(就像在Word里面删除字符那样)。
这里我们看一下PDF文档的实际存储数据,这里是内容流:
所以,你可能需要提前学习一下PDF文档结构,以及页面内容流中的操作符含义(这不是本文的内容)。
在这个PDF的内容流中,你会明显可看到 /Artifact /Subtype/Watermark 这一行信息,这说明水印是以/Artifact储存的,如果我们能够在内容流中直接删除它,是不是就可以去掉水印呢?
那么,问题来了,至今为止,我没有见到任何一个软件允许使用者随意编辑pdf文档中的内容流。原因很简单,这会破坏PDF文档的完整性。随意地编辑它们,会导致PDF文档损坏。因此,一直以来,处理水印都是专用工具的事情。
我在接触PDF文档一段时间之后,开始思考如何通过简单地修改内容流来达到删除水印的目的。道理很简单,水印并不是PDF文档的必备内容,删掉它们不会影响文档的完整性。
唯一面临的难点是,我得自己从头写一个软件,负责给用户展示内容流操作符,并有条件地允许使用者修改它们。
所以,oPDF软件诞生了。这是个免费工具,不像商业软件那样又大又贵。
oPDF v2.1可以:
1、去除编辑权限,展平表单,去除页面交互,删除数字签名。
2、可以任意修改文档页面内容流和资源内容流的指令集,可以改文本,改颜色,改位置,也就是说它可以修改页面任何内容,并不仅仅是去水印。
3、可以通杀八类PDF水印,包括注释水印、文本水印、曲线水印、路径水印、痕迹水印、表单水印、图片水印、图案水印。
oPDF 软件的工作原理是根据使用者的指令,删除或者替换PDF文档页面的内容流中的操作符。这就从理论上避免的文档结构的重构,也就是实现了无损处理。
如果你有更多问题,可以看看教程(中文版)
Remove Text watermarks
Remove Image watermarks
Use wildcard characters
Remove Artifact watermarks
Remove Resource watermarks and Artifact Watermarks by serial number
Remove Annotation watermarks
Remove Curve watermarks (Color section)
Remove Text watermarks (location section)
Stay tuned for more tutorials...
Top comments (0)