官方:oPDF 专业的PDF水印分析工具----它是 PDFCommander 万能PDF水印删除工具的升级版
2024年七月份,我写了一个PDF去水印的万能工具PDFCommnder,广受网友好评,周下载量超过五位数。但是在实践中,我也发现了一些问题。PDFCommander是一个命令行工具,功能强大的同时,也不可避免的抬高了使用门槛。使用这个工具软件需要用户预先了解PDF操作符知识、了解命令行参数、懂得命令行窗口操作。最难的是即使知道了这些知识,但是如何从纷繁复杂的PDF文档结构中找到需要的水印位置和操作符,依旧是大多数人躲不过去的拦路虎。甚至我本人在没有恰当工具帮助下,也无法找到正确的水印位置。
为了方便PDF水印的查找,应广大网友的要求,我开发了oPDF专业的PDF水印分析工具。
oPDF开发的初衷是为了方便迅速地查看PDF操作符和内嵌资源,帮助使用者迅速定位水印位置。使用它的前提依然是需要充分了解PDF操作符。有人问,为什么不做成可见即可得的界面,让我看到水印就能点点鼠标删除它。我的回答是:那样的话,你可能需要的是一个PDF编辑工具,而不是专门的去水印工具。
oPDF的主要功能是解析PDF文档的内部结构,并根据需要展示处理。也就是说,它会把PDF文档内部的操作符、各种表单、图片、注释等内嵌资源适度地展示给使用者。如果你能看懂这些内容,就可以找到需要定位的水印或者其它信息。剩下的工作就和PDFCommander一样了。
下面简单介绍一下如何使用oPDF查找文本水印:
拖拽你的pdf文件到oPDF右边窗口,等待PDF解析结束。点击左侧文本信息选项卡,如果能看到水印文本,说明该文本水印大概率是通过Tj/TJ操作符实现的。然后勾选显示原始数据及文本,你会找到文本对应的Tj/TJ操作符内容,这样用PDFCommander的-t参数有90%的概率可以去除。需要注意的是-t参数的准确值要看读取PDF选项卡中读到的内容流,可能是字符串,也可能是0x开头的16进制编码。
PDF文本有多种指令,简单的是Tj/TJ操作符指令,略难的是曲线绘制指令,困难的是图片路径指令。前两个可以通过替换内容流文本或者删除指令段清除,路径指令则要处理更多操作。
关于PDF水印,使用者需要了解的知识有很多,但对大多数外行来说,学会删除简单的文本水印,就可以入门了。
oPDF和PDFCommander下载 蓝奏云 密码:amlx 提示:如果在Windows11下,软件界面灰蒙蒙的,请在设置中打开透明效果(设置--辅助功能--视觉效果,或者个性化--颜色,开启透明效果)。
oPDF目前仍处于长期开发中,软件功能只完成了查看水印功能,还没有加入处理水印功能,本软件预计在2026年完成,敬请期待...
如果有不能处理的PDF文档水印,请联系作者QQ 564955427,QQ群 779635892
******************************************************************************
PDF水印按位置分类:
1、注释水印(位于Annots),包括内容流、表单和图案等。
2、内容水印(位于Contents),即内容流指令,可能在内嵌资源中。
3、资源水印(位于Resources),包括内容流、表单和图案等
PDF水印按指令分类:文本水印、图片水印、掩码水印,曲线水印、痕迹水印、路径水印
常用的PDF操作符指令:
1). General graphics state(普通图形状态操作符)
----w: 设置线的宽度
----J: 设置线端点风格. Butt/Round/Projecting square
----j: 设置线交叉风格. Miter/Round/Bevel
----M: 设置Miter Limit
----d: 设置虚线风格.
----ri: 设置Rendering Intent(呈色意向)
----i: 设置平面化容忍度.
----gs: 设置图形状态参数.
2). Special graphics state(特殊图形状态操作符)
----q: 保存当前图形状态
----Q:回复图形状态.
----cm:设置当前装换矩阵.
3). Path construction(路径构建操作符)
----m: 移动当前指针到指定位置.
----l: 添加一条连接当前指针到指定位置的线段.
----c: 添加一条Bezier曲线, 有2个控制点,2个端点.
----v: 添加一条Bezier曲线, 2个控制点重合.
----y: 添加一条Bezier曲线, 第二个控制点和第二个端点重合.
----h: 闭合路径
----re: 添加一个矩形.
4). Path painting(路径绘制操作符)
----S: 描绘路径.
----s: 闭合路径并描绘路径.
----f: 填充路径,使用非零回转数规则确定区域,路径在填充之前闭合.
----F: 等同f,为了兼容.
----f*: 填充路径,使用奇偶规则确定区域.
----B: 填充路径,使用非零回转数规则确定区域, 并描绘路径.
----B*: 填充路径,使用奇偶规则确定区域, 并描绘路径.
----b: 闭合路径, 填充路径,使用非零回转数规则确定区域, 并描绘路径.
----b*: 闭合路径,使用奇偶规则确定区域, 并描绘路径.
----n: 结束路径,不做任何描绘和填充.
5). Clipping paths(路径修剪操作符)
----W: 将当前修剪区域和当前路径做交,使用非零回转数规则.
----W*: 将当前修剪区域和当前路径做交,使用奇偶规则.
6). Text objects(文本对象操作符)
----BT: 开始一个文本对象.
----ET: 结束一个文本对象.
7). Text state(文本状态操作符)
----Tc: 设置字符间隔.
----Tw: 设置单词间隔.
----Tz: 设置水平缩放.
----TL: 设置Leading.
----Tf: 设置文本字体.
----Tr: 设置Render(渲染)模式.(0填充,1轮廓,2填充和轮廓,3不可见)
----Ts: 设置Rise
8). Text positioning(文本位置操作符)
----Td: 移动到下一行的开始,通过偏移(tx,ty).
----TD: 移动到下一行的开始,通过偏移(tx,ty). 同时设置Leading为-ty.
----Tm: 设置文本矩阵和文本线矩阵.
----T*: 移动到下一行的开始位置. 和0 Tl Td相同.
9). Text showing(文本显示操作符)
----Tj: 显示一个文本字符串.
----TJ: 显示一个或者多个文本字符串,允许独立的制定各个字型的位置.
----': 移动到下一行并显示一个文本字符串.
----": 移动到下一行并显示一个文本字符串. 并指定字符间距为ac, 单词间距为aw.
10). Type3 fonts(type3字体操作符)
----d0: 设置字型的宽度.
----d1: 设置字型的宽度及自行的bounding box(边界矩形).
11). Color(颜色操作符)
----CS: 设置描绘颜色空间.
----cs: 设置非描绘颜色空间.
----SC: 设置描绘颜色值,针对一般颜色空间.
----SCN: 设置描绘颜色值,允许特殊颜色空间.
----sc: 设置非描绘颜色值,针对一般颜色空间.
----scn: 设置非描绘颜色值,允许特殊颜色空间.
----G: 设置描绘颜色空间为DeviceGray,并设置颜色值.
----g: 设置非描绘颜色空间为DeviceGray, 并设置颜色值.
----RG: 设置描绘颜色空间为DeviceRGB,并设置颜色值.
----rg: 设置非描绘样色空间为DeviceRGB,并设置颜色值.
----K: 设置描绘颜色空间为DeviceCMYK,并设置颜色值.
----k: 设置非描绘颜色空间为DeviceCMYK,并设置颜色值.
12). Shading patterns(渐变样式操作符)
----sh: 输出一个shading对象.
13). Inline images(内联图像操作符)
----BI: 开始一个内联图像.
----ID: 开始内联图像数据.
----EI: 结束一个内敛图像.
14). XObjects(外部对象操作符)
----Do: 输出一个外部对象.
15). Marked content(标记内容操作符)
----MP: 定义一个标记内容点.
----DP: 定义一个带属性列表的标记内容点.
----BMC: 开始一个标记内容序列.
----BDC: 开始一个带属性列表的标记内容序列.
----EMC: 结束一个标记内容序列.
16). Compatibility(兼容性操作符)
----BX: 开始一个兼容段.
----EX: 结束一个兼容段.

浙公网安备 33010602011771号