2021年7月29日星期四

java实现自动静默打印功能

 最近接到一个需求,要求实现自动打印功能,一般网页打印pdf需要借助浏览器的pdf组件,而且还要弹出打印窗口,再点击打印才能实现。

那么如何实现自动打印了,从点击自己网页上3次缩减到点击一次了?

一.实现思路:

        1.读取本地打印机服务

        2. 服务端打印肯定不行需要一个客户端

        3.应用程序需要和本地打印服务通信,发送不同的打印指令

       本想自己用Python写一个打印控件的,但是时间来不及啊。。

二.采用技术知识

     (以自动打印pdf为例)

  1. java操作文件流
  2. javascripte
  3. pdfjs                       
  4. 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

没有评论:

发表评论