zyl910

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

作者: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中的水印》. http://www.cnblogs.com/zyl910/archive/2012/05/22/pdf_remove_watermake_marco.html

posted on 2012-11-14 16:50  zyl910  阅读(3183)  评论(1编辑  收藏  举报