oPDF开发的初衷是为了方便迅速地查看PDF操作符和内嵌资源,帮助使用者迅速定位水印位置,并能无损去除PDF各种水印(软件的原理决定了处理前后不会丢失页面元素),或者修改文档结构,解除权限等等。同时,oPDF全功能版提供命令行参数支持和批量处理支持,可以急速处理大量的PDF文档。

使用oPDF的前提依然是需要充分了解PDF操作符。有人问,为什么不做成可见即可得的界面,让我看到水印就能点点鼠标删除它。我的回答是:那样的话,你可能需要的是一个PDF编辑工具,而不是专门的去水印工具。

oPDF用途是解析PDF文档的内部结构,并根据需要展示处理。也就是说,它会把PDF文档内部的内容流操作符、各种表单、图片、注释等内嵌资源适度地展示给使用者。如果你能看懂这些内容,就可以找到需要定位的水印或者其它信息。剩下的工作就是填写参数处理操作符或资源对象,也就是所谓的去水印。

oPDF可以去除编辑权限,展平表单,去除页面交互,删除数字签名。

oPDF可以任意修改文档页面内容流和资源内容流的指令集,可以改文本,改颜色,改位置,也就是说它可以一次性修改页面固定内容,并不仅仅是去水印。

oPDF可以通杀八类PDF水印,包括注释水印、文本水印、曲线水印、路径水印、痕迹水印、表单水印、图片水印、图案水印。

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: 结束一个兼容段。

声明:本站内容均收集于互联网,如不慎侵犯到您的版权利益,请附带相关证明文件来信本站将立即予以下架删除。