可编辑的pdf文件不多,工作中很少遇到类似的情况,很多需要用到自动打印的场合,一般就直接把pdf拖入到coreldraw或ai中,转换为矢量图,然后利用vba在编辑软件中实现自动打印。
手头上有一份客户发过来的pdf文件,可以直接在文件的表格中编辑内容,双击开始编辑,输入完成回车退出编辑。客户要求我们自己填写一下序列号与测试日期,然后打印出来就可以了。遗憾的是这个pdf加了密,coreldraw或ai两大神器都没法直接编辑它。
随着该客户的订单量逐渐增多,手动输入并ctrl+p的操作实在无法满足劳动人民日益增长的摸鱼需求,于是考虑用类似按键精灵的方式来解决问题,于是就有了上一篇文章,《python2.7所对应的pyautogui版本是哪个》。python组件的安装是个让人很头疼的事情,这还是在2023年,各类工具日趋完善的情况下。然而快速实现一个功能也确实是简单方便。比如实现一个自动打印的仿人工操作。
import pyautogui as ctrl
import time
time.sleep(4)
x,y=ctrl.position()
ctrl.moveTo(x,y)
for i in range(1,51):
ctrl.doubleClick(x,y)
ctrl.keyDown('delete')
ctrl.keyUp('delete')
ctrl.typewrite("12345-abcde-")
ctrl.typewrite(str(i))
ctrl.hotkey('ctrl','p')
time.sleep(1)
ctrl.keyDown('enter')
ctrl.keyUp('enter')
time.sleep(2)
程序需要用到2个组件,分别是time(安装自带),pyautogui(pip安装,python2.7版本选择0.9.17之前版本)。程序的逻辑很简单,运行程序后首先会等待4秒,在这4秒时间内将鼠标移动到待编辑单元格,4秒时间到,程序开始工作,首先双击编辑单元格,按下删除键删除单元格内容,输入需要的序列号,按ctrl+p打印,停顿1秒以等待打印窗口弹出,1秒后程序按回车,继续等待2秒让电脑向打印机发送数据。
这里有个需要注意的地方,就是循环的“i”是数字形式的数据,“typewrite”的数据要求是个字符,所以这里用str函数强制转换了一下数据的格式。