开源网页图片打印服务

      因为要做一个活动,需要用户上传照片,然后有服务器编辑后,在前端打印。这本是一个很简单的功能,但却卡在了最后一步,就是如何将照片输出到打印机。如果将照片下载然后用专业软件打印当然可以,但是考虑到活动现场的状况,太复杂的操作可能引起混乱。


      首先想到的是直接使用浏览器自带的打印功能,使用print.js,打印局部页面。测试过各个浏览器后,发现问题远没想象的那么好。chrome及chromium核心的浏览器在打印时都会将彩色页面打印成黑白页面。这真的不可接受。firefox对局部页面的打印没有预览直接就调用系统打印输出,也是不可接受。IE支持的不够好,而且现在已经不再支持了。只有旧版的edge还可以,但是有太多的参数无法设置。包括边框,宽高等。所以也没法使用。


      其次就想到了各种的浏览器插件,比如Lodop和jatoolsPrinter。这种商业软件功能完善,但是限制也多,比如有水印。而且大多重视报表,对图片的打印比较弱。


      难道就没有简单的网页打印服务吗?google加百度的去查找,一直没有找到合适的,既然如此那就只能自己来发明轮子了。


      思路是这样的,首先编写一个本地http服务,允许跨域提交数据。网页通过ajax提交数据至http服务,http服务拿到数据后,启动打印预览及打印服务。OK,思路很简单。下面就是开始动手,拿出尘封已久的QT。开始编码。

     核心代码很简单,http服务可以用现成的qhttp的webserver,主要封装下接收数据后的处理过程,数据接收后,使用QPixmap 实例化图片,然后渲染至打印预览。图片的传输使用base64,而前端图片的base64编码很容易就可以用canvas拿到,

    具体的代码看这里github,这可以完美满足照片打印的需求,打印机的设置也可以预先设置好,方便前端一键调用,对于其他的特殊html打印,可以使用QTextDocument来渲染,也有不错的效果。

     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值