远程打印教程

完全免费且无水印的远程打印教程

  • 前提条件

基于免费的HttpPrinter和Sakura实现,其原先实现远程打印需要中间服务器过渡,本文则是不需要中间服务器,只需要打印机连接一台电脑(收银用的电脑也可以),且该电脑可以上网,还需要一个能解析的域名;

2、点击左侧的创建隧道,进入如下图的设置:
在这里插入图片描述服务器选择带“可建站”字样的;隧道类型选http;本地端口默认12345;绑定域名写你自己的,比如你拥有域名abc.com,则可以用print.abc.com;其他可以不填,然后点确认创建;
3、点击网页左侧的隧道列表,如下图,找到刚新建的这一条隧道,复制服务器后的域名地址,例如我这里是cn-zj-bgp-2.sakurafrp.com
在这里插入图片描述4、然后进入到自己的域名解析页面,新增解析记录,类型(type)为CNAME,主机记录(host)为你的域名前缀如print,记录值为刚刚复制的服务器域名,即cn-zj-bgp-2.sakurafrp.com;添加完成后过一阵子即可生效;
5、点击刚刚网页左侧的管理面板,在右侧点击“点击显示”,并复制显示的秘钥;如图:
在这里插入图片描述

  • 客户端
    1、在需要远程打印的打印机所连接的电脑上打开我整合的软件包,找到/HttpPrinter/HttpPrinter.exe;
    双击运行即可,如下图:
    点击系统设置可以勾选开机自启(默认已勾选);中间可以改端口,如果有必要的话(改端口的话之前隧道映射的端口也要随之改变);设置为预览会出现打印预览而不是直接打印,可用来调试,调试无误再设置成打印即可;如需退出,右下角的图标右键-退出系统;
    在这里插入图片描述2、在我整合的软件包里找到/HttpPrinter/SakuraLauncher.exe;
    双击运行,如下图:输入刚刚拷贝的秘钥,点击登录;最好设置成开机自启;
    在这里插入图片描述3、登录完成后点击左侧的隧道,如下图,点击刚刚新建的隧道的开关即可;
    在这里插入图片描述
    4、此时访问你的域名如print.abc.com,如果配置无误的话,会显示
    HttpPrinter网页打印插件(未注册版)或者是HttpPrinter加上一堆乱码,说明已经配置成功了;

  • 服务器调用
    1、我整合的软件包里有调用示例,在/调用示例/Http协议示例/html文件夹下有示例网页,其中用js脚本演示了使用post来调用打印机;
    2、需要发起打印只需要对你的域名如print.abc.com发送post请求,即可发起打印,示例代码(nodejs)如下:传参并打印一张小票

var request = require('request');
var msg = '{' +
    '"method":"' + 'printreport' + '"' +
    ',"ReportType":"' + 'fastreport' + '"' /*报表类型 gridreport fastreport reportmachine 为空 将默认为gridreport  */ +
    ',"ReportName":"' + 'AAAPosTicket.fr3' + '"' /*报表文件名 POS小票 */
    +
    ',"ReportVersion":"' + '1' + '"' /*可选。报表版本, 为空则默认1  如果本地报表的版本过低 将从 ReportUrl 地址进行下载更新*/ +
    ',"ReportUrl":"' + '' + '"' /*可选。为空 将不更新本地报表 , 如果本地报表不存在可以从该地址自动下载*/
    //+',"ReportUrl":"' + 'http://localhost/test.fr3' +'"' /*可选。为空 将不更新本地报表 , 如果本地报表不存在可以从该地址自动下载*/
    +
    ',"Copies":"' + '1' + '"' /*可选。打印份数,支持指定打印份数。默认1份,如果为零,不打印,只返回报表生成的pdf,jpg等文件*/
    +
    ',"PrintOffsetX":"' + '0' + '"' /*可选。打印右偏移,单位厘米。报表的水平方向上的偏移量,向右为正,向左为负。*/ +
    ',"PrintOffsetY":"' + '0' + '"' /*可选。打印下偏移,单位厘米。 报表的垂直方向上的偏移量,向下为正,向上为负。*/ +
    ',"Preview":"' + '0' + '"' /*可选。是否预览,和主界面设置的效果一样 为空默认不预览,   0:不预览,1:预览(弹出导出的pdf,jpg等文件)。*/ +
    ',"token":"' + 'aa' + '"' /*可选。只要token值在列表中 方可打印*/ +
    ',"taskId":"' + '1234567' + '"' /*可选。多个打印任务同时打印时,根据该id确定返回的是哪个打印任务。 */ +
    ',"exportfilename":"' + '' + '"' /*可选。自定义 导出 文件名称 为空 或者 自定义名称 如 test */ +
    ',"exportfiletype":"' + '' + '"' /*可选。自定义 导出 文件格式 为空 或者 自定义名称 如 pdf  */
    +
    ',"AField": [' ///*字段, type ftBlob (base64格式) ,ftString ftInteger ftBoolean, ftFloat, ftCurrency,ftDateTime,  size (ftString 设置为实际长度,其他的设置为0,例如 ftInteger ftBlob 等设置为0 ) 
    +
    '{"type": "ftString", "name": "title","size": 255,"required": true},' +
    '{"type": "ftString", "name": "subTitle","size": 255,"required": false},' +
    '{"type": "ftString", "name": "deskname","size": 255,"required": false},' +
    '{"type": "ftString", "name": "djh","size": 255,"required": false},' +
    '{"type": "ftString", "name": "czy","size": 255,"required": false},' +
    '{"type": "ftString", "name": "starttime","size": 255,"required": false},' +
    '{"type": "ftString", "name": "tf","size": 255,"required": false},' +
    '{"type": "ftString", "name": "ysje","size": 255,"required": false},' +
    '{"type": "ftString", "name": "yhje","size": 255,"required": false},' +
    '{"type": "ftString", "name": "sjje","size": 255,"required": false},' +
    '{"type": "ftString", "name": "kahao","size": 255,"required": false},'
    +
    ']'
    +
    ',"AData": [' ///*数据行  
    +
    '{"title": "港味花胶鸡小票", "subTitle": "南京市浦口区沿江街道天润城第十二街区西门", "deskname": "桌号:1", "djh": "单据号:20191101000001", "czy": "操作员:服务员一号", "starttime": "消费日期:2020-9-29", "tf": "", "ysje": "100.00", "yhje": "0.00", "sjje": "100.00", "kahao": "890001"},'
    +
    ']'
    +
    ',"BField": [' ///*字段, type ftBlob (base64格式) ,ftString ftInteger ftBoolean, ftFloat, ftCurrency,ftDateTime,  size (ftString 设置为实际长度,其他的设置为0,例如 ftInteger ftBlob 等设置为0 ) 
    +
    '{"type": "ftString", "name": "shangpname","size": 255,"required": true},' +
    '{"type": "ftString", "name": "shuliang","size": 255,"required": false},' +
    '{"type": "ftString", "name": "je","size": 255,"required": false},'
    +
    ']'
    +
    ',"BData": [' ///*数据行  
    +
    '{"shangpname": "青椒肉丝", "shuliang": "1", "je": "14.50"},' +
    '{"shangpname": "清汤丸子", "shuliang": "1", "je": "20.90"},' +
    '{"shangpname": "土豆丝", "shuliang": "1", "je": "7.00"},' +
    '{"shangpname": "凉拌牛肉", "shuliang": "1", "je": "50.00"},' +
    '{"shangpname": "红烧茄子", "shuliang": "1", "je": "30.00"},' +
    '{"shangpname": "四喜丸子", "shuliang": "1", "je": "23.00"},' +
    ']'

    +
    '}';
request.post({ url: 'http://print.abc.com/', form: msg }, function(error, response, body) {//要将url中的域名换成你自己的
    if (!error && response.statusCode == 200) {
        console.log(body)
    } else {
        console.log(error)
    }
})

使用了request模块,所以在这之前需要在命令行里执行npm install request;
要将url中的域名换成你自己的域名;
这个示例代码是打印小票模板,只需要传参即可,该模板在客户端的报表工具里可以新增或者修改,如图:在fastreport中的POS小票即是该代码所打印的模板;
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值