针对有些打印机没有适配国产系统的情况,国产系统也都给出了云打印的解决方案,通过c/s的架构共享Windows的打印机实现,比如uos的统信云打印和银河麒麟的麒麟云打印。
现在我遇到一个情况就是使用单位通过行为管理或者别的设备过滤了云打印服务端的端口,比如麒麟云打印的8000端口,是一个比较常见的端口。想办法修改端口?反编译云打印?太难了...
网上搜索python实现云打印,有很多案例。一般是基于对文件夹文件生成或者修改的监控调用打印机打印。非常棒的思路!我呢,就想通过python的uploadserver架一个web服务器,客户端通过浏览器上传文件到服务端,监控到文件生成就调用打印机打印出来,完美啊。实践过程中发现,web上传到服务器跟直接复制文件到文件夹还是有区别的,它没有直接生成目标文件,而是先生成一个tmpxxx的临时文件,文件上传完毕后再重命名为目标文件,on_created和on_modified方法都不理想了,后面看到还有个on_moved方法,用目标路径dest_path就可以完美定位需要打印的那个上传文件。
Python和bat脚本打包生成了一个自解压的exe,复制到%userprofile%目录,双击解压,双击执行里面的add_reg_run.bat添加启动项,然后修改一下settings.json配置文件里面的url路径为当前目录。重启后,客户端就可以通过浏览器上传文件打印了。我称之为私有云云打印。