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


    作者: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

    作者:zyl910
    版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0.
  • 相关阅读:
    Ajax入门
    多线程入门(五)
    多线程入门(四)
    多线程入门(三)
    多线程入门(二)
    多线程入门(一)
    git使用简介
    Windows远程登录到VirtualBox安装的Ubuntu11.10
    阿里面试2(转)
    百度java开发面试题
  • 原文地址:https://www.cnblogs.com/zyl910/p/pdf_remove_watermake_marco_v2.html
Copyright © 2020-2023  润新知