整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          一個精悍的Javascript庫,實現(xiàn)Web打印(print.js)

          載地址在github,文末有使用方法

          github地址:https://github.com/crabbly/Print.js/

          官網(wǎng):https://printjs.crabbly.com/(可能被墻)

          無法訪問可以加企鵝群看離線版:1006429377

          或者訪問:https://www.yuque.com/caiyongjie/snknlo/ga5ef9

          官網(wǎng)截圖

          簡介

          • 原文:

          Print.js was primarily written to help us print PDF files directly within our apps, without leaving the interface, and no use of embeds. For unique situations where there is no need for users to open or download the PDF files, and instead, they just need to print them.

          One scenario where this is useful, for example, is when users request to print reports that are generated on the server side. These reports are sent back as PDF files. There is no need to open these files before printing them. Print.js offers a quick way to print these files within our apps.

          • 谷歌翻譯:

          Print.js主要是為了幫助我們直接在我們的應(yīng)用程序中打印PDF文件,而無需離開界面,也不使用嵌入。 對于不需要用戶打開或下載PDF文件的獨特情況,相反,他們只需要打印它們。

          例如,當(dāng)用戶請求打印在服務(wù)器端生成的報告時,這種情況很有用。 這些報告以PDF文件形式發(fā)回。 打印前無需打開這些文件。 Print.js提供了一種在我們的應(yīng)用程序中打印這些文件的快捷方式。

          • 注意的地方:

          PDF files must be served from the same domain as your app is hosted under. Print.js uses iframe to load files before printing them, therefore, it is limited by the Same Origin Policy. This helps preventing Cross-site scripting (XSS) attacks.

          必須在托管應(yīng)用程序的同一域中提供PDF文件。 Print.js在打印文件之前使用iframe加載文件,因此它受同源策略的限制。 這有助于防止跨站點腳本(XSS)攻擊。

          初體驗

          首先在頁面上添加一個按鈕

          • 打印PDF(注意:火狐不支持iframes,可以使用新標(biāo)簽頁)
          <button type="button" onclick="printJS('docs/printjs.pdf')">
           Print PDF
           </button>
          
          • 打印大文件(可以彈出提示消息)
          <button type="button" onclick="printJS({printable:'docs/xx_large_printjs.pdf', type:'pdf', showModal:true})">
           Print PDF with Message
           </button>
          
          • html打印
           <form method="post" action="#" id="printJS-form">
           ...
           </form>
           <button type="button" onclick="printJS('printJS-form', 'html')">
           Print Form
           </button>
          
          • 打印帶頭部
           <button type="button" onclick="printJS({ printable: 'printJS-form', type: 'html', header: 'PrintJS - Form Element Selection' })">
           Print Form with Header
           </button>
          
          • 打印圖片
          <img src="images/print-01.jpg" />
           printJS('images/print-01-highres.jpg', 'image')
           printJS({printable: 'images/print-01-highres.jpg', type: 'image', header: 'My cool image header'})
          
          • 帶頭
           printJS({
           printable: ['images/print-01-highres.jpg', 'images/print-02-highres.jpg', 'images/print-03-highres.jpg'],
           type: 'image',
           header: 'Multiple Images',
           imageStyle: 'width:50%;margin-bottom:20px;'
           })
          
          • 從JSON數(shù)據(jù)
           someJSONdata = [
           {
           name: 'John Doe',
           email: 'john@doe.com',
           phone: '111-111-1111'
           },
           {
           name: 'Barry Allen',
           email: 'barry@flash.com',
           phone: '222-222-2222'
           },
           {
           name: 'Cool Dude',
           email: 'cool@dude.com',
           phone: '333-333-3333'
           }
           ]
           <button type="button" onclick="printJS({printable: someJSONdata, properties: ['name', 'email', 'phone'], type: 'json'})">
           Print JSON Data
           </button>
          
          • 自定義CSS
           <button type="button" onclick="printJS({
          	 printable: someJSONdata,
          	 properties: ['name', 'email', 'phone'],
          	 type: 'json',
          	 gridHeaderStyle: 'color: red; border: 2px solid #3971A5;',
          	 gridStyle: 'border: 2px solid #3971A5;'
          	})">
           Print JSON Data
           </button>
          
          • 自定義頭
           <button type="button" onclick="printJS({
          	 printable: someJSONdata,
          	 properties: [
          		{ field: 'name', displayName: 'Full Name'},
          		{ field: 'email', displayName: 'E-mail'},
          		{ field: 'phone', displayName: 'Phone'}
          	 ],
          	 type: 'json'
           })">
           Print with custom table header text
           </button>
          <button type="button" onclick="printJS({
          		printable: someJSONdata,
          		type: 'json',
          		properties: ['name', 'email', 'phone'],
          		header: '<h3 class="custom-h3">My custom header</h3>',
          		style: '.custom-h3 { color: red; }'
          	 })">
          	Print header raw html
          </button>
          

          安裝使用

           npm install print-js --save
          //或
           yarn add print-js
          


          import print from 'print-js'
          


           //cdn,不知道能不能訪問,我這可以訪問
           https://printjs-4de6.kxcdn.com/print.min.js
           https://printjs-4de6.kxcdn.com/print.min.cssye
           <script src="print.js"></script>
          
          • 如果您將使用模態(tài)功能,還包括頁面上的Print.css。
           <link rel="stylesheet" type="text/css" href="print.css">
          



          詳細(xì)配置:

          兼容性

          .首先引入js插件

          <!--第一個生成二維碼,2,3分別2種打印插件-->

          <script type="text/javascript" src="/Liems/plugins/aweto/jquery.qrcode.min.js"></script>

          <script type="text/javascript" src="/Liems/plugins/aweto/jquery.jqprint-0.3.js">

          </script><script src="/Liems/plugins/aweto/jquery.PrintArea.js"></script>

          2.然后再html中添加二維碼顯示的位置

          <div id="wai" >

          <div id="qrcode"></div>

          <!--startprint-->

          <div id="daying"><img src="" id="image" style="display: none;"/></div>

          <!--endprint-->

          <button id="bu" class='i-form-button' onclick="stamp()" style="display: none;">打印二維碼</button>

          </div>

          3.然后在js中寫入生成二維碼的方法

          jQuery(function(){

          //獲取身份證號碼

          var idCard = $('#EOEMPMST__0__EEM_SFZ_COD').val();

          var jsons=idCard+"|1";

          var zhi=utf16to8(jsons);

          //判斷是否新建

          if(idCard != null && idCard != ''){

          jQuery('#qrcode').qrcode({

          render : "canvas",

          width : 150,

          height : 150,

          text : zhi

          });

          //保存為圖片

          $("canvas").attr("id","erw");

          var canvas = document.getElementById('erw');

          var context = canvas.getContext('2d');

          var image = new Image();

          var strDataURI =canvas.toDataURL("image/png");

          document.getElementById('image').src = strDataURI;

          document.getElementById('bu').setAttribute('style', 'display: block');

          }

          })

          4.qrcode對中文支持不太好,,所以需要轉(zhuǎn)碼

          //轉(zhuǎn)碼

          function utf16to8(str) {

          var out, i, len, c;

          out = "";

          len = str.length;

          for(i = 0; i < len; i++) {

          c = str.charCodeAt(i);

          if ((c >= 0x0001) && (c <= 0x007F)) {

          out += str.charAt(i);

          } else if (c > 0x07FF) {

          out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));

          out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));

          out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

          } else {

          out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));

          out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

          }

          }

          return out;

          }

          5.最后進(jìn)行局部打印

          //局部打印

          function stamp(){

          var bdhtml=window.document.body.innerHTML;//獲取當(dāng)前頁的html代碼

          var odd=bdhtml;

          var sprnstr="<!--startprint-->";//設(shè)置打印開始區(qū)域

          var eprnstr="<!--endprint-->";//設(shè)置打印結(jié)束區(qū)域

          var prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+17); //從開始代碼向后取html

          prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//從結(jié)束代碼向前取html

          window.document.body.innerHTML=prnhtml;

          window.print();

          //第二種打印jQuery('#wai').PrintArea();

          //還原原網(wǎng)頁

          window.document.body.innerHTML=odd;

          document.getElementById('bu').setAttribute('style', 'display: none');

          document.getElementById('image').src="";

          window.location.reload();

          }

          方法中有業(yè)務(wù)處理,,忽略即可。大體思路如上,歡迎討論

          、測試代碼,保存為【test.html】

          <!DOCTYPE html>
          <html lang="en">
          
          <head>
              <meta charset="UTF-8">
              <meta name="viewport" content="width=device-width, initial-scale=1.0">
              <title>Document</title>
              <script src="write.js"></script>
          </head>
          
          <body>
              <div id="ID1"></div>
          
              <script>
                  writeformat(()=>{
                      writeln(1, 2, 3, 4);
                      writeln(1, [2, 3], 4);
                      writeln({a:1,b:2});
                      writeln(1, [2, 3], [4, { a:1, b: { c:1, d:2 }},{a:1,b:2} ]);
                      writeln();
                  });
          
                  writebr(1, [2, 3], [4, { a:1, b: { c:1, d:2 }},{a:1,b:2} ]);
          
                  document.getElementById("ID1").innerHTML = getWriteHtml(1, [2, 3], [4, { a:1, b: { c:1, d:2 }},{a:1,b:2} ]);
          
                  writeformat(()=>{
                      write(getWriteHtmlPretty(1, [2, 3], [4, { a:1, b: { c:1, d:2 }},{a:1,b:2},5 ],6));
                  });
              </script>
          </body>
          
          </html>

          效果如下:


          2、源碼(保存為 write.js)


          主站蜘蛛池模板: 伊人色综合网一区二区三区| 在线精品亚洲一区二区三区| 日本一区精品久久久久影院| 色窝窝无码一区二区三区成人网站| 3d动漫精品啪啪一区二区中| 日韩精品电影一区| 日韩一区二区三区精品| 成人精品一区二区电影| 国产精品一区二区香蕉| 国产一区二区三区在线观看免费| 日韩毛片一区视频免费| 国产免费一区二区视频| 精品一区二区三区在线播放视频| 国产一国产一区秋霞在线观看| 日本不卡一区二区视频a| 亚洲无码一区二区三区| 一区二区免费电影| 精品动漫一区二区无遮挡| 日亚毛片免费乱码不卡一区| 99精品一区二区免费视频| 一区二区三区内射美女毛片 | 一区二区三区日韩精品| 精品人妻一区二区三区毛片| 精彩视频一区二区三区| 日韩一区二区三区在线| 亚洲精品伦理熟女国产一区二区| 中文字幕亚洲综合精品一区| 久久国产精品一区免费下载 | 秋霞日韩一区二区三区在线观看 | 亚洲线精品一区二区三区| 国产日韩高清一区二区三区| 无码人妻一区二区三区在线水卜樱 | 无码少妇一区二区浪潮免费| 亚洲高清日韩精品第一区 | 久久亚洲中文字幕精品一区四 | 高清无码一区二区在线观看吞精 | 日韩精品一区在线| 精品一区二区ww| 午夜性色一区二区三区不卡视频| 日本一区二区三区不卡视频| 国语对白一区二区三区|