您的位置:首页 > 其它

[使用心得] 利用按键精灵批量删除pdf中的水印 V2:用于页面内对象数量不定时删除最后一个对象

2012-11-14 16:50 711 查看
作者:zyl910

一、问题背景

  之前的“利用按键精灵批量删除pdf中的水印”仅适用于页面内对象数量确定时。如下图中,页面内对象总是3个,其中第3个是水印——


  但是,对于某些pdf文件,页面内对象的数量是不定的,见下图——



  某些页面有3个对象,而另外一些页面是4个对象。这时原来的脚本就不能用了,若下移3次会导致删除有效数据,若下移4次又会误删除页面。
  该怎样才能准确定位到最后一个对象呢?


二、解决办法

  在Adobat内容面板上反复尝试,发现使用 Shift+上下方向键 时,焦点会限制在当前层次。
  于是,可以利用这一点实现快捷键盲操作——
1.首先,点击鼠标将键盘焦点设在“页面1”上;
2.按1次方向键“Right”,使“页面1”的子节点展开;
3.按住Shift键,然后按4次方向键“Down”,随即松开Shift键。这时因Shift+上下方向键限制层次,键盘焦点停留能准确停留在最后一个对象(水印对象)上。但这时选择了多个对象,不能立即删除。
4.按1次方向键“Up”,上移并取消多选;
5.按1次方向键“Down”,使键盘焦点停留在“页面1”的最后一个对象——即水印对象上;
6.按“Delete”键删除水印对象。删除成功后,键盘焦点会回到“页面1”;
7.按1次方向键“Left”,使“页面1”的子节点收拢;
8.按1次方向键“Down”,使键盘焦点停留在“页面2”;
9.重复第2步至第8步,删除所有页面中的水印对象。


三、编写脚本

  根据上面的成果。可以编写按键精灵脚本了——

// 利用Shift键智能到达最下面的一项.
SetSimMode 2    // 发现使用组合键时,只有方式2能行.
KeyPress "Right", 1    //展开页面节点
Delay 10
KeyPress "Down", 1    //下移进入
Delay 10
//下移至最后一项
KeyDown 16, 1    // Shift+Down
KeyPress 40, 1
KeyPress 40, 1
KeyPress 40, 1
KeyPress 40, 1
KeyUp 16, 1
Delay 10
KeyPress "Up", 1    //先回退一项,取消Shift选择
Delay 10
KeyPress "Down", 1    //下移至水印对象
Delay 10
KeyPress "Delete", 1    //删除水印
Delay 100
KeyPress "Left", 1    //收缩页面节点
Delay 10
KeyPress "Down", 1    //下移到下一个节点
Delay 10


  在实际使用时发现,必须使用“SetSimMode 2”调整模拟模式。若是模式0,有时Shift组合键会失效。若是模式1,有时会按错键导致焦点跑飞。只有模式2能稳定工作,就是速度慢了一点。

参考文献——
《[使用心得]利用按键精灵批量删除pdf中的水印》. /article/4862373.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: