基于开源项目二次开发KKPrinter实现打印机共享,远程跨网络实现不同网络打印机共享,客户端利用虚拟打印机截取打印文件转发至物理打印机(附源码) |
您所在的位置:网站首页 › 打印机可以打印程序代码 › 基于开源项目二次开发KKPrinter实现打印机共享,远程跨网络实现不同网络打印机共享,客户端利用虚拟打印机截取打印文件转发至物理打印机(附源码) |
基于开源项目二次开发KKPrinter实现打印机共享,远程跨网络实现不同网络打印机共享,客户端利用虚拟打印机截取打印文件转发至物理打印机(附源码)。实现方案有很多种,这里主要介绍 2 种,并附详细的实现过程和提供需要的源码下载。 题外话,首先分享一个在线PDF工具箱,功能非常全非常好用: https://tools.pdf24.org/en/all-tools 一、实现思路简介 要实现标题所写的目标,需要按照下面的步骤来进行: 1、开发虚拟打印机程序 跟普通的打印机驱动一样,安装完后可以在“打印机”里看到本打印机,第三方软件也能通过点“打印”选择该打印机。打印时完成两个处理:一是生成pdf文件,二是把文档送到真实打印机进行打印。 2、开发把打印文件上传到服务器的程序 这个程序是一个服务,要一直运行。程序会实时监测是否有虚拟打印机生成的PDF文件,如果有则立即进行上传到服务器的操作。 二、打印机相关案例介绍 1、利用虚拟打印机把打印内容上传到服务器并输出给物理打印机(一) A 运行环境:win7/win10 B 打印内容转成文件格式:JPG C 文件上传通讯协议:https、post D 物理打印机类型:热敏 E 连接的物理打印机台数:1台 2、利用虚拟打印机把打印内容上传到服务器并输出给物理打印机(二) A 运行环境:win7/win10 B 打印内容转成文件格式:PDF C 文件上传通讯协议:https、post D 物理打印机类型:热敏 E 连接的物理打印机台数:4台(纸的尺寸不同) 3、打印机驱动程序开发 A 运行环境:win7/win10 B 打印机类型:热敏 C 打印数据传递:串口 D 参数设定:调用打印机的SDK来设定 4、利用PJL命令控制打印机参数 A 运行环境:win7/win10 B 打印机类型:喷墨 C 打印数据传递:串口 D 命令实现功能:设定打印机的灰度、单双面、份数等 5、打印内容偏移的矫正 A 运行环境:win7/win10 B 打印机类型:热敏 C 打印数据传递:串口 D 问题描述:打印内容随着打印份数增加偏移增大 方案一: 基于开源项目clawpdf二次开发,实现我们的功能。clawpdf项目开源但并不免费,一般人根本没法直接从github下载后运行,他有各种坑,还有文件签名,我也是花了很久的时间才弄好,在它的基础上做了一些新的业务实现,并命名为KKPrinter,但是大部分代码任然是clawpdf的,在这里说明。 打开项目目录,双击 clawpdf.sln 启动项目,如图所示:
打开一个文档,按 Ctrl + P 调出打印机列表,如下图: 上面的打印机驱动 数量 和 名称,可以在代码里面进行控制,这里为了尊重开源项目,我就用了原来的名称。 有两种方式把拦截到的打印机文件转发到物理打印机所在电脑: 1)HTTP请求; 2)Ftp请求; 在物理打印机监听到文件后,直接使用共享的打印机或者默认的打印机对文件进行打印,这里主要用到一个核心库:PdfPrintingNet.dll 。这样就可以实现在物理打印机电脑自动打印文件,不需要人为干预。
完整源码下载地址: 点击下载 方案二: 基于修改系统注册表中的打印机属性参数实现,其原理都是差不多,都是通过虚拟打印机拦截用户的打印机文件,转发到物理打印机进行打印。这种方案也测试过,就是不能完全保留打印时候的全部属性参数,比如只能保留部分参数 比如 页码等等。 打开项目目录,双击 clawpdf.sln 启动项目,如图所示:
添加虚拟打印机到本地:
完整源码下载地址: 点击下载 以上是市面上使用的技术方案,比如 森雀云 等等。 我们团队有更高级的实现方案,有需要可以私聊。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |