最近接到一个需求,要求实现自动打印功能,一般网页打印pdf需要借助浏览器的pdf组件,而且还要弹出打印窗口,再点击打印才能实现。
那么如何实现自动打印了,从点击自己网页上3次缩减到点击一次了?
一.实现思路:
1.读取本地打印机服务
2. 服务端打印肯定不行需要一个客户端
3.应用程序需要和本地打印服务通信,发送不同的打印指令
本想自己用Python写一个打印控件的,但是时间来不及啊。。
二.采用技术知识
(以自动打印pdf为例)
- java操作文件流
- javascripte
- pdfjs
- Lodop打印控件   1.4.137。ps:如果找不到对应版本请与评论与我联系,我分享给大家
四.上代码
一.后端核心方法主要是将pdf文件转成base64编码
public static String encodeBase64File(File file) throws Exception { FileInputStream inputFile = new FileInputStream(file); byte[] buffer = new byte[(int)file.length()]; inputFile.read(buffer); inputFile.close(); return new BASE64Encoder().encode(buffer); }
二.前端核心代码
1.在html文件body需要插入
<canvas id="thepdfcanvas2" style="display:none;"></canvas>
2. 需要在html页面引入lodop打印js,pdfjs
<script type="text/javascript" src="../static/js/print/LodopFuncs.js"></script><script type="text/javascript" src="../static/js/pdfjs-dist/build/pdf.js"></script><script type="text/javascript">var LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));</script>
3.发送ajax请求向后端返回pdf文件流,通过pdfjs绘制pdf成图片可以进行属性调节,进而调用print静默打印
function printOneURL(pdfUrl,preview){ var params = {"path": pdfUrl}; $.sendDefaultAjax(jsPPath + "/printModel/print.do", params,function (data) { if (data.code === 0) { var pdfData = atob(data.msg); PDFJS.workerSrc = '../static/js/pdfjs-dist/build/pdf.worker.js'; //从pdf文件对象逐页获取page,并调用toImageAndPrint函数打印内容 PDFJS.getDocument({data: pdfData}).then(function getPdfHelloWorld(pdf) { //此适用pdf只有一个page情况 pdf.getPage(1).then(function getPageHelloWorld(page) { //scale调节生成的画布图片大小,与清晰度有关,需要调整。 var scale = 5.5; var viewport = page.getViewport(scale); //将生成的page对象加载到canvas中 var canvas = document.getElementById('thepdfcanvas2'); var context = canvas.getContext......原文转载:http://www.shaoqun.com/a/892317.html
跨境电商:https://www.ikjzd.com/
执御:https://www.ikjzd.com/w/717.html
拍拍购物:https://www.ikjzd.com/w/2205
特许金融分析师:https://www.ikjzd.com/w/1396
最近接到一个需求,要求实现自动打印功能,一般网页打印pdf需要借助浏览器的pdf组件,而且还要弹出打印窗口,再点击打印才能实现。那么如何实现自动打印了,从点击自己网页上3次缩减到点击一次了?一.实现思路:1.读取本地打印机服务2.服务端打印肯定不行需要一个客户端3.应用程序需要和本地打印服务通信,发送不同的打印指令本想自己用Python写一个打印控件的,但是时间来不及啊。。二.采用技术知识(以自
四川这个地方已种茶2000多年,还成为宫廷用茶,许多人不知道在哪:http://www.30bags.com/a/223864.html
四川这么美 只去一次怎么够:http://www.30bags.com/a/429718.html
四川这么美 只去一次怎么够_四川旅游攻略_四川旅游景点:http://www.30bags.com/a/415464.html
四川震区旅游振兴 :http://www.30bags.com/a/406797.html
躲在瓜棚日儿媳妇。 那天我再也忍不住疯狂把儿媳妇摁在地上:http://lady.shaoqun.com/m/a/274731.html
口述被三人干了一晚上 两个男人做我的详细过程:http://lady.shaoqun.com/m/a/248079.html
装睡屁股转过去让滑进去 挺进白嫩老师下面:http://www.30bags.com/m/a/249724.html
口述:少妇讲述被邻居做爱诱惑的经历(5/5):http://www.30bags.com/m/a/249638.html
深圳宝安科技馆8月展览汇总(持续更新):http://www.30bags.com/a/517601.html
2021时尚深圳展蝶讯馆展览好看吗:http://www.30bags.com/a/517602.html
2021时尚深圳蝶讯馆观展攻略:http://www.30bags.com/a/517603.html
深圳欢乐谷夏浪音乐节有朱星杰吗:http://www.30bags.com/a/517604.html
没有评论:
发表评论